{
  "openapi": "3.1.0",
  "info": {
    "title": "ketl Unified API",
    "description": "Norsk åpen-data- og compliance-infrastruktur eksponert som ett API.\n\n**To rute-tier:**\n\n- `/api/data/{kilde}/{endepunkt}` — eksisterende proxy mot\n  `ketl-innsiktsmaskin-service` (~60 kilder, snake_case-passthrough).\n  Stabilt for v0.x, vil bli markert deprecated når Unified API når v1.\n- `/api/v1/*` — Unified API (#408). Domene-normalisert (`Company`,\n  `Source`, `Snapshot`, `Event`), kilde-agnostisk. Under bygging.\n\nSe [docs/DATA_PROXY.md](https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/blob/main/docs/DATA_PROXY.md)\nfor proxy-mønster og [docs/connectors/](https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/tree/main/docs/connectors)\nfor kilde-spesifikke spec-er.\n\n## Rate limits (#2105)\n\nAlle endepunkter er rate-limit-beskyttet per `Authorization`-token.\nTier-grensene er:\n\n| Tier        | Requests / 60 s | Burst | Concurrent |\n|-------------|-----------------|-------|------------|\n| Dev (gratis)| 60              | 10    | 4          |\n| Pro         | 1 000           | 100   | 16         |\n| Team        | 10 000          | 500   | 64         |\n| Enterprise  | etter avtale    | —     | —          |\n\nResponsen inneholder følgende headers på alle 200/4xx/5xx-responser:\n\n- `X-RateLimit-Limit` — gjeldende grense for vinduet\n- `X-RateLimit-Remaining` — antall kall igjen i vinduet\n- `X-RateLimit-Reset` — Unix-timestamp når vinduet nullstilles\n- `Retry-After` — sekunder klient bør vente før retry (kun ved 429)\n\nVed 429 returnerer vi `Problem` med `ketlRetryAfterMs` for fetch-\nbaserte klienter som ikke leser HTTP-headers direkte.\n\n## Cursor-paginering (#2105)\n\nEndepunkter som `/api/v1/companies/{orgnr}/events` bruker opak\nbase64url-kodet cursor i feltet `nextCursor`. Klienter skal\nbehandle cursor som opak streng — ikke parse innholdet.\n\n- Cursors er gyldige i **24 timer** fra opprettelse\n- Ugyldig/utløpt cursor returnerer `400 Problem` med\n  `type=https://data.ketl.no/errors/invalid-cursor`\n- Cursors er stabile per snapshot — to klienter med samme cursor\n  får samme side så lenge underliggende data ikke endres\n",
    "version": "0.1.0",
    "contact": {
      "name": "ketl support",
      "url": "https://ketl.no",
      "email": "support@ketl.no"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://data.ketl.no/vilkar"
    },
    "termsOfService": "https://data.ketl.no/vilkar",
    "x-status": "draft",
    "x-issues": [
      "https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/issues/408",
      "https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/issues/410",
      "https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/issues/412",
      "https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/issues/413"
    ]
  },
  "servers": [
    {
      "url": "https://data.ketl.no",
      "description": "Production (data.ketl.no — app-domenet, alle API-er under /api/** og /mcp/**)"
    },
    {
      "url": "https://ketl-innsikt.web.app",
      "description": "Firebase Hosting (canonical web origin)"
    },
    {
      "url": "http://localhost:3000",
      "description": "Local dev (`npm run dev`)"
    }
  ],
  "tags": [
    {
      "name": "data-proxy",
      "description": "Eksisterende proxy mot service. Hvert kall ruter videre til\n`/v1/connectors/{kilde}/{endepunkt}` på service-siden. Stabilt API.\n"
    },
    {
      "name": "companies",
      "description": "Normaliserte selskaps-entiteter (Tier 1 MVP per #410). Kilde-agnostisk\n— én `Company` uavhengig av om data kommer fra Brreg, CVR, YTJ eller\nBolagsverket.\n"
    },
    {
      "name": "sources",
      "description": "Kilde-katalog. Lister hver datakilde web kjenner til, med status\n(connected/planned/scraping) og lenker til dokumentasjon.\n"
    },
    {
      "name": "meta",
      "description": "Helse, versjon og diagnostikk. Brukes av admin-UI og uptime-bot.\n"
    },
    {
      "name": "sanctions",
      "description": "Sanksjonsscreening mot EU konsolidert liste via OpenSanctions (#2817).\n"
    },
    {
      "name": "research",
      "description": "KETL Research API — agent-drevet selskapsresearch med kø og versjonerte\nrapporter. Cloud Function-implementert (501-stub i `next dev`, #2783).\n"
    },
    {
      "name": "account",
      "description": "Kontodata for autentisert bruker/API-nøkkel (audit-logg, GDPR-eksport).\n"
    },
    {
      "name": "reviews",
      "description": "Review-scraper-flaten (#1153) — anmeldelser fra 19 plattformer\n(Trustpilot, Gulesider, FINN, Legelisten m.fl.). Politeness-rate-limit\nog robots.txt-respekt (451 når disallowed). Param-navn varierer\nbevisst per plattform.\n"
    }
  ],
  "paths": {
    "/api/data/{kilde}/{endepunkt}": {
      "parameters": [
        {
          "name": "kilde",
          "in": "path",
          "required": true,
          "description": "Kilde-nøkkel (kebab-case). Se `Source.key` for full liste.",
          "schema": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          }
        },
        {
          "name": "endepunkt",
          "in": "path",
          "required": true,
          "description": "Ressurs-path inn mot kilden. Format og lovlige verdier varierer per\nkilde — se [docs/DATA_PROXY.md](https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/blob/main/docs/DATA_PROXY.md).\n",
          "schema": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "example": "selskap/974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "data-proxy"
        ],
        "operationId": "proxyConnectorGet",
        "summary": "Proxy GET mot ketl-innsiktsmaskin-service",
        "description": "Pass-through GET-call til service. Path-segmentet `endepunkt` dekoder\ndirekte til `/v1/connectors/{kilde}/{endepunkt}` på service.\nAuth + rate-limit + billing skjer i Cloud Function-laget før kallet\nforwardes.\n",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Pass-through fra service. Schema er kilde-spesifikk.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "data-proxy"
        ],
        "operationId": "proxyConnectorPost",
        "summary": "Proxy POST mot ketl-innsiktsmaskin-service",
        "description": "Brukes av kilder som krever større queries enn det som passer i URL\n(SSB PxWebApi v2 ≥ 2000 tegn, se docs/connectors/ssb-pxwebapi-spec.md).\n",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Pass-through fra service. Schema er kilde-spesifikk.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies": {
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "searchCompanies",
        "summary": "Søk selskaper på navn",
        "description": "Fritekst-navnesøk over nordiske selskapsregistre. Dette er den **kanoniske**\nflaten; `/api/v1/companies/search` er et alias med identisk kontrakt (#4187).\n\n- `country=NO` (default): Brreg Enhetsregisteret (delt cache + guardrails).\n- `country=DK`: CVR/Virk. `country=FI`: YTJ/PRH.\n- `SE`: ikke fritekst-navnesøk hos upstream — bruk ID-oppslag via\n  `/api/v1/company/{orgnr}`.\n\nHvert treff har et kilde-agnostisk `companyId` + `idType`\n(`NO_ORGNR` | `DK_CVR` | `FI_YTUNNUS`, #3904). NO-treff beholder også `orgnr`\nfor bakåtkompatibilitet.\n\nAuth + rate-limit håndteres av Cloud Function-laget i prod.\n",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Søketekst (selskapsnavn eller del av navn).",
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "example": "Equinor"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "description": "Landkode for navnesøk. SE støttes ikke (kun ID-oppslag).",
            "schema": {
              "type": "string",
              "default": "NO",
              "enum": [
                "NO",
                "DK",
                "FI"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall treff (klemmes til [1, 50]). Aliaset `pageSize` godtas også, slik at responsfeltet `pageSize` kan round-trippes (#4168). Settes begge, vinner `limit`.\n",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Alias for `limit` — samme navn som responsfeltet, slik at en agent kan sende verdien den leste tilbake (#4168). `limit` har presedens.\n",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "0-indeksert sidenummer. NB: Brreg (country=NO) kan ikke paginere forbi 10 000 treff — `page × pageSize` må være `< 10000`. Et vindu forbi taket gir `400` (`errors/page-out-of-range`), ikke `502` — forfin `q` i stedet for å paginere dypt (#4256).\n",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "total",
                    "page",
                    "pageSize",
                    "country",
                    "companies"
                  ],
                  "properties": {
                    "total": {
                      "type": "integer",
                      "description": "Totalt antall treff i registeret (ikke bare denne siden)."
                    },
                    "page": {
                      "type": "integer",
                      "description": "0-indeksert sidenummer."
                    },
                    "pageSize": {
                      "type": "integer"
                    },
                    "country": {
                      "type": "string",
                      "example": "NO"
                    },
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "companyId",
                          "idType",
                          "name",
                          "country",
                          "status",
                          "orgForm"
                        ],
                        "properties": {
                          "companyId": {
                            "type": "string",
                            "description": "Nasjonal selskaps-ID (NO orgnr, DK CVR, FI Y-tunnus).",
                            "example": "923609016"
                          },
                          "idType": {
                            "type": "string",
                            "enum": [
                              "NO_ORGNR",
                              "DK_CVR",
                              "FI_YTUNNUS"
                            ],
                            "description": "Hvilken ID-type companyId er — for videre-oppslag."
                          },
                          "orgnr": {
                            "type": "string",
                            "description": "Bakåtkomp-alias (= companyId) satt KUN for NO-treff.",
                            "example": "923609016"
                          },
                          "name": {
                            "type": "string",
                            "example": "EQUINOR ASA"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "NO",
                              "DK",
                              "FI"
                            ],
                            "example": "NO"
                          },
                          "status": {
                            "type": "string",
                            "example": "aktiv"
                          },
                          "orgForm": {
                            "type": "string",
                            "example": "ASA"
                          }
                        }
                      }
                    },
                    "canonicalUrl": {
                      "type": "string",
                      "description": "Kanonisk URL for dette søket (peker alltid på /api/v1/companies)."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Manglende `q`, ugyldig `limit`/`page`, eller land ikke støttet.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Kilde (Brreg) utilgjengelig.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{orgnr}": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "getCompanyByOrgnr",
        "summary": "Hent ett selskap (normalisert)",
        "description": "Returnerer den siste normaliserte snapshoten av selskapet, kilde-agnostisk.\nBak kulissene leses canonical doc fra Firestore (`companies/{orgnr}`)\neller faller tilbake til live-fetch via Brreg-connector hvis cache mangler.\n\n**Feltspråk (#3901):** uten `lang` (eller `?lang=no`) returneres den norske\n`Company`-formen; `?lang=en` returnerer den engelsk-kanoniske\n`CompanyEnglish`-formen som deler vokabular med `GET /api/v1/company/{orgnr}`\n(`data.brreg`). Responsen kryss-lenker til den aggregerte profilen via\n`_related`.\n",
        "parameters": [
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "no",
                "en"
              ],
              "default": "no"
            },
            "description": "Feltspråk for responsen. `no` (default): norske domenefelt (`Company`).\n`en`: engelsk-kanoniske felt (`CompanyEnglish`), linjert med den\naggregerte flatens `data.brreg`.\n"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Selskap funnet. Skjemaet avhenger av `lang`: `Company` (norsk, default)\neller `CompanyEnglish` (`?lang=en`).\n",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object",
                      "title": "Company",
                      "description": "Normalisert selskaps-entitet. For Tier 1 dekker den norske AS/ASA fra Brreg.\nTier 2 utvider med svenske/danske/finske selskaper via lands-spesifikke\n`nationalIdType`-verdier (#410).\n",
                      "required": [
                        "orgnr",
                        "nationalIdType",
                        "country",
                        "navn",
                        "selskapsform",
                        "status",
                        "kontakt",
                        "konkurs",
                        "underAvvikling",
                        "slettetIso",
                        "sistHentetIso",
                        "source"
                      ],
                      "properties": {
                        "orgnr": {
                          "type": "string",
                          "pattern": "^\\d{9}$",
                          "description": "Norsk organisasjonsnummer (9 siffer).",
                          "example": "974760673"
                        },
                        "nationalIdType": {
                          "type": "string",
                          "enum": [
                            "ORGNR",
                            "CVR",
                            "ORGNR_SE",
                            "YTJ",
                            "KENNITALA"
                          ],
                          "description": "Hvilket nasjonalt register `orgnr` kommer fra. Disambiguerer ID-typen ved\nnordisk utvidelse (#410): `ORGNR` (NO Brreg), `CVR` (DK Erhvervsstyrelsen),\n`ORGNR_SE` (SE Bolagsverket), `YTJ` (FI PRH), `KENNITALA` (IS Skrá).\n",
                          "example": "ORGNR"
                        },
                        "country": {
                          "type": "string",
                          "enum": [
                            "NO",
                            "SE",
                            "DK",
                            "FI",
                            "IS"
                          ],
                          "description": "ISO 3166-1 alpha-2-landkode for registeret. Del av entitets-identiteten.",
                          "example": "NO"
                        },
                        "navn": {
                          "type": "string",
                          "minLength": 1,
                          "description": "Registrert selskapsnavn fra Brreg.",
                          "example": "Statens vegvesen"
                        },
                        "mvaNavn": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet."
                        },
                        "selskapsform": {
                          "type": "string",
                          "enum": [
                            "AS",
                            "ASA",
                            "ENK",
                            "ANS",
                            "SA",
                            "IKS",
                            "KF",
                            "STI",
                            "FLI",
                            "ANNET"
                          ],
                          "description": "Selskapsform per Brreg-kategorisering."
                        },
                        "antallAnsatte": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Antall ansatte fra siste Brreg-snapshot."
                        },
                        "stiftetIso": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                          "example": "1864-07-01"
                        },
                        "forretningsadresse": {
                          "oneOf": [
                            {
                              "type": "object",
                              "title": "CompanyAddress",
                              "required": [
                                "adresse",
                                "postnummer",
                                "poststed",
                                "kommunenummer",
                                "land"
                              ],
                              "properties": {
                                "adresse": {
                                  "type": "array",
                                  "description": "Adresselinjer (gateadresse, etasje, etc.).",
                                  "items": {
                                    "type": "string"
                                  },
                                  "minItems": 0,
                                  "maxItems": 3
                                },
                                "postnummer": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk postnummer (4 siffer)."
                                },
                                "poststed": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "kommunenummer": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                                },
                                "land": {
                                  "type": "string",
                                  "enum": [
                                    "NO"
                                  ],
                                  "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                                }
                              },
                              "example": {
                                "adresse": [
                                  "Akersveien 26"
                                ],
                                "postnummer": "0177",
                                "poststed": "Oslo",
                                "kommunenummer": "0301",
                                "land": "NO"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Registrert forretningsadresse, eller `null` når registeret ikke fører en\nkomplett adresse (slettede/fusjonerte enheter, enkelte\nutenlandsregistrerte). Vi lyver ikke med et tomt adresse-skall (#4255).\n"
                        },
                        "postadresse": {
                          "oneOf": [
                            {
                              "type": "object",
                              "title": "CompanyAddress",
                              "required": [
                                "adresse",
                                "postnummer",
                                "poststed",
                                "kommunenummer",
                                "land"
                              ],
                              "properties": {
                                "adresse": {
                                  "type": "array",
                                  "description": "Adresselinjer (gateadresse, etasje, etc.).",
                                  "items": {
                                    "type": "string"
                                  },
                                  "minItems": 0,
                                  "maxItems": 3
                                },
                                "postnummer": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk postnummer (4 siffer)."
                                },
                                "poststed": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "kommunenummer": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                                },
                                "land": {
                                  "type": "string",
                                  "enum": [
                                    "NO"
                                  ],
                                  "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                                }
                              },
                              "example": {
                                "adresse": [
                                  "Akersveien 26"
                                ],
                                "postnummer": "0177",
                                "poststed": "Oslo",
                                "kommunenummer": "0301",
                                "land": "NO"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Postadresse hvis forskjellig fra forretningsadresse."
                        },
                        "kontakt": {
                          "type": "object",
                          "description": "Kontaktinformasjon (alle felter kan være null).",
                          "required": [
                            "epost",
                            "telefon",
                            "hjemmeside"
                          ],
                          "properties": {
                            "epost": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "email"
                            },
                            "telefon": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "hjemmeside": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "uri"
                            }
                          }
                        },
                        "naeringskode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Primært NACE-nummer (f.eks. `84.130`).",
                          "example": "84.130"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "aktiv",
                            "konkurs",
                            "under_avvikling",
                            "slettet"
                          ],
                          "description": "**Avledet status** — autoritativt KYB-/screening-signal. Presedens\n(høyest først): `slettet` (fjernet/fusjonert fra registeret) → `konkurs`\n→ `under_avvikling` → `aktiv`. En slettet enhet er terminal uansett\ngjenværende risiko-flagg. `under_avvikling` dekker også tvangsavvikling i\nden kanoniske modellen. De rå indikatorene `konkurs`/`underAvvikling`/\n`slettetIso` beholdes ved siden av (#4254).\n",
                          "example": "aktiv"
                        },
                        "konkurs": {
                          "type": "boolean",
                          "description": "**Risiko-flagg.** `true` hvis selskapet er registrert konkurs i Brreg.\nDirekte screening-/KYB-relevant — agenter som vurderer motparter bør lese\ndette feltet.\n",
                          "example": false
                        },
                        "underAvvikling": {
                          "type": "boolean",
                          "description": "**Risiko-flagg.** `true` hvis selskapet er under avvikling. Som `konkurs`\net konkret bool-signal for due diligence.\n",
                          "example": false
                        },
                        "slettetIso": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "**Risiko-flagg.** ISO-8601 slettedato hvis enheten er slettet/fusjonert i\nregisteret, ellers `null`. Driver `status:\"slettet\"`. En slettet motpart\nsom presenteres som aktiv er falsk trygghet i KYB-sjekken (#4254).\n",
                          "example": null
                        },
                        "sistHentetIso": {
                          "type": "string",
                          "minLength": 20,
                          "description": "Hentet-tidspunkt fra Brreg, ISO-8601.",
                          "example": "2026-05-04T08:30:00Z"
                        },
                        "source": {
                          "type": "string",
                          "description": "Proveniens — hvilken kilde som leverte denne snapshoten (jf.\nexplainability-moat #74). For Tier 1: `brreg:enhetsregisteret`.\n",
                          "example": "brreg:enhetsregisteret"
                        },
                        "apiVersion": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Versjon av kilde-API observert da payloaden ble hentet. Brukes for\ndrift-deteksjon; `null` når kilden ikke eksponerer en versjonsmarkør.\n",
                          "example": null
                        }
                      },
                      "example": {
                        "orgnr": "974760673",
                        "nationalIdType": "ORGNR",
                        "country": "NO",
                        "navn": "Statens vegvesen",
                        "mvaNavn": null,
                        "selskapsform": "ANNET",
                        "antallAnsatte": 7500,
                        "stiftetIso": "1864-07-01",
                        "forretningsadresse": {
                          "adresse": [
                            "Postboks 1010"
                          ],
                          "postnummer": "2605",
                          "poststed": "Lillehammer",
                          "kommunenummer": "3403",
                          "land": "NO"
                        },
                        "postadresse": null,
                        "kontakt": {
                          "epost": "firmapost@vegvesen.no",
                          "telefon": "+47 22 07 30 00",
                          "hjemmeside": "https://www.vegvesen.no"
                        },
                        "naeringskode": "84.130",
                        "status": "aktiv",
                        "konkurs": false,
                        "underAvvikling": false,
                        "slettetIso": null,
                        "sistHentetIso": "2026-05-04T08:30:00Z",
                        "source": "brreg:enhetsregisteret",
                        "apiVersion": null
                      }
                    },
                    {
                      "type": "object",
                      "title": "CompanyEnglish",
                      "description": "Normalisert selskaps-entitet med engelsk felt-navngivning. Felt-for-felt\nprojeksjon av `Company` (Norwegian) — ingen data går tapt.\n",
                      "required": [
                        "orgnr",
                        "nationalIdType",
                        "country",
                        "legalName",
                        "organizationForm",
                        "status",
                        "contact",
                        "bankruptcy",
                        "underLiquidation",
                        "deletedDate",
                        "retrievedAt",
                        "source"
                      ],
                      "properties": {
                        "orgnr": {
                          "type": "string",
                          "pattern": "^\\d{9}$",
                          "description": "Norsk organisasjonsnummer (9 siffer).",
                          "example": "974760673"
                        },
                        "nationalIdType": {
                          "type": "string",
                          "enum": [
                            "ORGNR",
                            "CVR",
                            "ORGNR_SE",
                            "YTJ",
                            "KENNITALA"
                          ],
                          "description": "Hvilket nasjonalt register `orgnr` kommer fra.",
                          "example": "ORGNR"
                        },
                        "country": {
                          "type": "string",
                          "enum": [
                            "NO",
                            "SE",
                            "DK",
                            "FI",
                            "IS"
                          ],
                          "description": "ISO 3166-1 alpha-2-landkode for registeret.",
                          "example": "NO"
                        },
                        "legalName": {
                          "type": "string",
                          "minLength": 1,
                          "description": "Registrert selskapsnavn (← `navn`).",
                          "example": "Statens vegvesen"
                        },
                        "vatName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet (← `mvaNavn`)."
                        },
                        "organizationForm": {
                          "type": "string",
                          "enum": [
                            "AS",
                            "ASA",
                            "ENK",
                            "ANS",
                            "SA",
                            "IKS",
                            "KF",
                            "STI",
                            "FLI",
                            "ANNET"
                          ],
                          "description": "Selskapsform per Brreg-kategorisering (← `selskapsform`)."
                        },
                        "employeeCount": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Antall ansatte fra siste snapshot (← `antallAnsatte`)."
                        },
                        "incorporationDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`) (← `stiftetIso`).",
                          "example": "1864-07-01"
                        },
                        "registeredAddress": {
                          "oneOf": [
                            {
                              "type": "object",
                              "title": "CompanyAddressEnglish",
                              "required": [
                                "street",
                                "postalCode",
                                "city",
                                "municipalityCode",
                                "country"
                              ],
                              "properties": {
                                "street": {
                                  "type": "string",
                                  "description": "Gateadresse-linjer slått sammen til én streng (\", \"-separert)."
                                },
                                "postalCode": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk postnummer (4 siffer)."
                                },
                                "city": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "municipalityCode": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                                },
                                "country": {
                                  "type": "string",
                                  "enum": [
                                    "NO",
                                    "SE",
                                    "DK",
                                    "FI",
                                    "IS"
                                  ],
                                  "description": "ISO 3166-1 alpha-2-landkode."
                                }
                              },
                              "example": {
                                "street": "Akersveien 26",
                                "postalCode": "0177",
                                "city": "Oslo",
                                "municipalityCode": "0301",
                                "country": "NO"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Registrert forretningsadresse, eller `null` (← `forretningsadresse`)."
                        },
                        "postalAddress": {
                          "oneOf": [
                            {
                              "type": "object",
                              "title": "CompanyAddressEnglish",
                              "required": [
                                "street",
                                "postalCode",
                                "city",
                                "municipalityCode",
                                "country"
                              ],
                              "properties": {
                                "street": {
                                  "type": "string",
                                  "description": "Gateadresse-linjer slått sammen til én streng (\", \"-separert)."
                                },
                                "postalCode": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk postnummer (4 siffer)."
                                },
                                "city": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "municipalityCode": {
                                  "type": "string",
                                  "pattern": "^\\d{4}$",
                                  "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                                },
                                "country": {
                                  "type": "string",
                                  "enum": [
                                    "NO",
                                    "SE",
                                    "DK",
                                    "FI",
                                    "IS"
                                  ],
                                  "description": "ISO 3166-1 alpha-2-landkode."
                                }
                              },
                              "example": {
                                "street": "Akersveien 26",
                                "postalCode": "0177",
                                "city": "Oslo",
                                "municipalityCode": "0301",
                                "country": "NO"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Postadresse hvis forskjellig (← `postadresse`)."
                        },
                        "contact": {
                          "type": "object",
                          "description": "Kontaktinformasjon (alle felter kan være null) (← `kontakt`).",
                          "required": [
                            "email",
                            "phone",
                            "website"
                          ],
                          "properties": {
                            "email": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "email"
                            },
                            "phone": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "website": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "uri"
                            }
                          }
                        },
                        "industryCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Primært NACE-nummer (← `naeringskode`).",
                          "example": "84.130"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "aktiv",
                            "konkurs",
                            "under_avvikling",
                            "slettet"
                          ],
                          "description": "Avledet status — autoritativt KYB-/screening-signal. Kanoniske koder,\nuoversatt (delt med den norske formen og den aggregerte flaten).\n",
                          "example": "aktiv"
                        },
                        "bankruptcy": {
                          "type": "boolean",
                          "description": "Risiko-flagg — `true` hvis registrert konkurs (← `konkurs`).",
                          "example": false
                        },
                        "underLiquidation": {
                          "type": "boolean",
                          "description": "Risiko-flagg — `true` hvis under avvikling (← `underAvvikling`).",
                          "example": false
                        },
                        "deletedDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "ISO-8601 slettedato hvis slettet/fusjonert, ellers `null` (← `slettetIso`).",
                          "example": null
                        },
                        "retrievedAt": {
                          "type": "string",
                          "minLength": 20,
                          "description": "Hentet-tidspunkt fra kilden, ISO-8601 (← `sistHentetIso`).",
                          "example": "2026-05-04T08:30:00Z"
                        },
                        "source": {
                          "type": "string",
                          "description": "Proveniens — hvilken kilde leverte snapshoten. Tier 1: `brreg:enhetsregisteret`.",
                          "example": "brreg:enhetsregisteret"
                        },
                        "apiVersion": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Versjon av kilde-API observert, eller `null`.",
                          "example": null
                        },
                        "mva": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "description": "MVA-beriking (#1954) — registrert i MVA-manntallet.",
                          "required": [
                            "registered",
                            "snapshotDate",
                            "source"
                          ],
                          "properties": {
                            "registered": {
                              "type": "boolean"
                            },
                            "snapshotDate": {
                              "type": "string"
                            },
                            "source": {
                              "type": "string"
                            }
                          }
                        },
                        "lei": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Legal Entity Identifier (GLEIF) hvis funnet via orgnr (#3102)."
                        },
                        "leiStatus": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "LEI-registreringsstatus (f.eks. `ISSUED`, `LAPSED`)."
                        },
                        "_related": {
                          "type": "object",
                          "description": "Kryss-lenker til søsken-flatene (agent-first discovery,",
                          "required": [
                            "aggregatedProfile",
                            "alternateLanguage"
                          ],
                          "properties": {
                            "aggregatedProfile": {
                              "type": "string",
                              "description": "Aggregert 360°-profil (`/api/v1/company/{orgnr}`).",
                              "example": "/api/v1/company/974760673"
                            },
                            "alternateLanguage": {
                              "type": "string",
                              "description": "Samme entitet i norsk feltspråk (`?lang=no`).",
                              "example": "/api/v1/companies/974760673?lang=no"
                            }
                          }
                        }
                      },
                      "example": {
                        "orgnr": "974760673",
                        "nationalIdType": "ORGNR",
                        "country": "NO",
                        "legalName": "Statens vegvesen",
                        "vatName": null,
                        "organizationForm": "ANNET",
                        "employeeCount": 7500,
                        "incorporationDate": "1864-07-01",
                        "registeredAddress": {
                          "street": "Postboks 1010",
                          "postalCode": "2605",
                          "city": "Lillehammer",
                          "municipalityCode": "3403",
                          "country": "NO"
                        },
                        "postalAddress": null,
                        "contact": {
                          "email": "firmapost@vegvesen.no",
                          "phone": "+47 22 07 30 00",
                          "website": "https://www.vegvesen.no"
                        },
                        "industryCode": "84.130",
                        "status": "aktiv",
                        "bankruptcy": false,
                        "underLiquidation": false,
                        "deletedDate": null,
                        "retrievedAt": "2026-05-04T08:30:00Z",
                        "source": "brreg:enhetsregisteret",
                        "apiVersion": null,
                        "mva": null,
                        "lei": null,
                        "leiStatus": null,
                        "_related": {
                          "aggregatedProfile": "/api/v1/company/974760673",
                          "alternateLanguage": "/api/v1/companies/974760673?lang=no"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Selskap finnes ikke (NXDOMAIN i Brreg eller ikke aktivert i ketl).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{orgnr}/events": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "listCompanyEvents",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Requires Firebase emulator (cd functions && npm run serve) for local dev; the Next.js route returns 501.",
        "summary": "List events for ett selskap",
        "description": "Returnerer en paginert event-stream for det gitte organisasjonsnummeret,\nsortert med nyeste først. Events skrives av Brreg endringsfeed\n(`functions/src/brreg-feed.ts`) hver 15. minutt.\n\n**Cursor-paginering:** Send `next_cursor`-verdien fra forrige respons\nsom `?cursor=...` for å hente neste side. Cursor er opak (base64url-\nencoded interne posisjons-info) — ikke forsøk å parse innholdet.\n\n**`X-Ketl-Serving-Mode`-header** settes alltid til `warehouse` siden\ndenne resursen kun finnes i Firestore (ingen upstream-fallback).\n\nStatus: **implementert** for `brreg`-kilde (moat #72 Tier 1).\nAndre kilder (Finanstilsynet, Kartverket, etc.) legges til etter hvert\nsom deres endringsfeeds skriver til `company_events`.\n",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Antall items per side. Default 50, cap 100.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque cursor fra `next_cursor` i forrige respons.",
            "schema": {
              "type": "string",
              "maxLength": 256
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Paginert event-liste (kan være tom).",
            "headers": {
              "X-Ketl-Serving-Mode": {
                "description": "Alltid `warehouse` for events-resursen.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "warehouse"
                  ]
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "PaginatedCompanyEvents",
                  "required": [
                    "items",
                    "next_cursor",
                    "limit",
                    "orgnr"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "title": "CompanyEventItem",
                        "required": [
                          "eventId",
                          "orgnr",
                          "eventType",
                          "source",
                          "detectedIso"
                        ],
                        "properties": {
                          "eventId": {
                            "type": "string",
                            "description": "Stabil event-id på formen `{source}:{externalCursor}`. For brreg-feed:\n`brreg_enhetsregister:{oppdateringsid}`.\n",
                            "pattern": "^[a-z][a-z0-9_]*:[A-Za-z0-9_.\\-]+$",
                            "example": "brreg_enhetsregister:12345678"
                          },
                          "orgnr": {
                            "type": "string",
                            "pattern": "^\\d{9}$",
                            "example": "974760673"
                          },
                          "eventType": {
                            "type": "string",
                            "description": "Canonical hendelsestype. For Brreg endringsfeed mappes\n`endringstype` til `brreg:enhet_opprettet|endret|slettet|fjernet`.\nUkjente verdier mappes til `brreg:enhet_ukjent` (forward-kompatibel).\n",
                            "pattern": "^[a-z][a-z0-9_-]*:[a-z][a-z0-9_-]*$",
                            "example": "brreg:enhet_endret"
                          },
                          "source": {
                            "type": "string",
                            "title": "SourceKey",
                            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
                            "enum": [
                              "brreg",
                              "ssb",
                              "norges-bank",
                              "enhetsregister",
                              "proff",
                              "bygg-anlegg",
                              "eksportor",
                              "kartverket",
                              "sodir",
                              "ais",
                              "artskart",
                              "avinor",
                              "barentswatch",
                              "elhub",
                              "fhi",
                              "finanstilsynet",
                              "finansinspektionen-se",
                              "finanstilsynet-dk",
                              "fisheries",
                              "fri-nettleie",
                              "frost",
                              "geonorge",
                              "hoyesterett",
                              "konkurs",
                              "kommunedatabasen",
                              "kostra",
                              "lakselus",
                              "lovtidend",
                              "luftkvalitet",
                              "lysingsblad",
                              "mattilsynet-smilefjes",
                              "met",
                              "nav",
                              "nb-dhlab",
                              "norske-utslipp",
                              "nve",
                              "nvdb",
                              "oslobors",
                              "patentstyret",
                              "politiloggen",
                              "regjeringen",
                              "rss-news",
                              "sdir",
                              "stortinget",
                              "stromprise",
                              "udir",
                              "connectors",
                              "data-quality",
                              "audit",
                              "companies",
                              "persons",
                              "kg",
                              "sync",
                              "config",
                              "sync-state",
                              "storage",
                              "discovery",
                              "lineage",
                              "backup",
                              "metrics",
                              "dashboard",
                              "brreg-endringer",
                              "nav-grunnbelop"
                            ]
                          },
                          "detectedIso": {
                            "type": "string",
                            "minLength": 20,
                            "description": "ISO-8601 tidsstempel da event ble observert/skrevet til warehouse.",
                            "example": "2026-05-14T08:30:00.000Z"
                          },
                          "rawEndringstype": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Råverdi fra kilde-API. For Brreg: `\"Ny\" | \"Endring\" | \"Sletting\" | \"Fjernet\"`.\n`null` hvis kilden ikke leverer en endringstype.\n",
                            "example": "Endring"
                          },
                          "externalCursor": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Kilde-spesifikk monotonisk cursor. For Brreg: `oppdateringsid` som string.\nBrukes internt til pagination — ikke en del av offentlig API-kontrakt.\n",
                            "example": "12345678"
                          }
                        }
                      }
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opaque base64url-encoded cursor for neste side. `null` når listen er\nferdig. Klient skal sende cursoren videre uten å forsøke å parse den.\n",
                      "example": "eyJvIjoxMjM0NTY3Nn0"
                    },
                    "limit": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100,
                      "description": "Antall items per side. Default 50, cap 100. Echoes inn-parameter slik\nat klient kan verifisere at serveren respekterte verdien.\n",
                      "example": 50
                    },
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Echoes path-parameteren slik at responsen er self-contained.",
                      "example": "974760673"
                    },
                    "meta": {
                      "type": "object",
                      "description": "Kun til stede på tomme førstesider (#3459): skiller «selskapet har\ningen hendelser» fra «event-ingest er ikke aktiv». Når `meta.ingest.\ningestActive` er false skal et tomt svar IKKE tolkes som at\nselskapet mangler historikk.\n",
                      "properties": {
                        "ingest": {
                          "type": "object",
                          "required": [
                            "ingestActive",
                            "lastIngestAt",
                            "cursor"
                          ],
                          "properties": {
                            "ingestActive": {
                              "type": "boolean",
                              "description": "true når brreg-feed har committet cursor siste 24 t."
                            },
                            "lastIngestAt": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "date-time",
                              "description": "Siste cursor-commit, null hvis ingest aldri har kjørt."
                            },
                            "cursor": {
                              "type": [
                                "integer",
                                "null"
                              ],
                              "description": "Siste committede Brreg-oppdateringsid."
                            },
                            "note": {
                              "type": "string",
                              "description": "Menneskelesbar forklaring når ingest ikke er aktiv."
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig orgnr, limit eller cursor.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Firestore-leseringsfeil (typisk manglende composite-index).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{orgnr}/snapshots": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "listCompanySnapshots",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Requires Firebase emulator (cd functions && npm run serve) for local dev; the Next.js route returns 501.",
        "summary": "List snapshots for ett selskap",
        "description": "Returnerer en paginert historikk av versjonerte snapshots for det gitte\norganisasjonsnummeret, sortert med nyeste først. Hver snapshot er en\nfrosset kopi av canonical company-doc i det øyeblikket Brreg-endringsfeeden\n(`functions/src/brreg-feed.ts`) detekterte en endring. En ny snapshot\nskrives kun ved diff — uendrede observasjoner gir ikke ny rad.\n\nBrukes av: revisjon (segment A) for «vis hvordan selskap X så ut per\ndato», audit trail (#75) for å bevise registerstatus ved et tidspunkt,\nog endringsspor-UI for diff mellom to snapshots.\n\n**Cursor-paginering:** Send `next_cursor`-verdien fra forrige respons\nsom `?cursor=...` for å hente neste side. Cursor er opak (base64url-\nencoded intern posisjons-info) — ikke forsøk å parse innholdet.\n\n**`X-Ketl-Serving-Mode`-header** settes alltid til `warehouse` siden\ndenne resursen kun finnes i Firestore (ingen upstream-fallback).\n\nStatus: **implementert** for `brreg`-kilde (moat #72 Tier 1).\nAndre kilder legges til etter hvert som deres endringsfeeds skriver til\n`companies/{orgnr}/snapshots`.\n",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Antall items per side. Default 50, cap 100.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque cursor fra `next_cursor` i forrige respons.",
            "schema": {
              "type": "string",
              "maxLength": 256
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Paginert snapshot-liste (kan være tom).",
            "headers": {
              "X-Ketl-Serving-Mode": {
                "description": "Alltid `warehouse` for snapshots-resursen.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "warehouse"
                  ]
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "PaginatedCompanySnapshots",
                  "required": [
                    "items",
                    "next_cursor",
                    "limit",
                    "orgnr"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "title": "CompanySnapshotItem",
                        "required": [
                          "snapshotId",
                          "orgnr",
                          "oppdateringsid",
                          "snapshotAtIso",
                          "company"
                        ],
                        "properties": {
                          "snapshotId": {
                            "type": "string",
                            "description": "Snapshot-id (padded `oppdateringsid`, 12 siffer). Stabil og\nkronologisk sorterbar leksikografisk.\n",
                            "example": "000000123456"
                          },
                          "orgnr": {
                            "type": "string",
                            "pattern": "^\\d{9}$",
                            "description": "Organisasjonsnummeret snapshoten gjelder.",
                            "example": "923609016"
                          },
                          "oppdateringsid": {
                            "type": "integer",
                            "description": "Brreg-endringsfeedens monotone oppdateringsid på tidspunktet snapshoten\nble skrevet. Brukes som cursor-posisjon (se `next_cursor`).\n",
                            "example": 123456
                          },
                          "endringstype": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Brreg-endringstype som utløste snapshoten (f.eks. `Endring`, `Ny`,\n`Sletting`). `null` for initial/periodisk snapshot uten eksplisitt type.\n",
                            "example": "Endring"
                          },
                          "snapshotAtIso": {
                            "type": "string",
                            "minLength": 20,
                            "description": "Når snapshoten ble skrevet. ISO-8601.",
                            "example": "2026-05-04T12:00:00.000Z"
                          },
                          "company": {
                            "type": "object",
                            "title": "Company",
                            "description": "Normalisert selskaps-entitet. For Tier 1 dekker den norske AS/ASA fra Brreg.\nTier 2 utvider med svenske/danske/finske selskaper via lands-spesifikke\n`nationalIdType`-verdier (#410).\n",
                            "required": [
                              "orgnr",
                              "nationalIdType",
                              "country",
                              "navn",
                              "selskapsform",
                              "status",
                              "kontakt",
                              "konkurs",
                              "underAvvikling",
                              "slettetIso",
                              "sistHentetIso",
                              "source"
                            ],
                            "properties": {
                              "orgnr": {
                                "type": "string",
                                "pattern": "^\\d{9}$",
                                "description": "Norsk organisasjonsnummer (9 siffer).",
                                "example": "974760673"
                              },
                              "nationalIdType": {
                                "type": "string",
                                "enum": [
                                  "ORGNR",
                                  "CVR",
                                  "ORGNR_SE",
                                  "YTJ",
                                  "KENNITALA"
                                ],
                                "description": "Hvilket nasjonalt register `orgnr` kommer fra. Disambiguerer ID-typen ved\nnordisk utvidelse (#410): `ORGNR` (NO Brreg), `CVR` (DK Erhvervsstyrelsen),\n`ORGNR_SE` (SE Bolagsverket), `YTJ` (FI PRH), `KENNITALA` (IS Skrá).\n",
                                "example": "ORGNR"
                              },
                              "country": {
                                "type": "string",
                                "enum": [
                                  "NO",
                                  "SE",
                                  "DK",
                                  "FI",
                                  "IS"
                                ],
                                "description": "ISO 3166-1 alpha-2-landkode for registeret. Del av entitets-identiteten.",
                                "example": "NO"
                              },
                              "navn": {
                                "type": "string",
                                "minLength": 1,
                                "description": "Registrert selskapsnavn fra Brreg.",
                                "example": "Statens vegvesen"
                              },
                              "mvaNavn": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet."
                              },
                              "selskapsform": {
                                "type": "string",
                                "enum": [
                                  "AS",
                                  "ASA",
                                  "ENK",
                                  "ANS",
                                  "SA",
                                  "IKS",
                                  "KF",
                                  "STI",
                                  "FLI",
                                  "ANNET"
                                ],
                                "description": "Selskapsform per Brreg-kategorisering."
                              },
                              "antallAnsatte": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Antall ansatte fra siste Brreg-snapshot."
                              },
                              "stiftetIso": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                                "example": "1864-07-01"
                              },
                              "forretningsadresse": {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "title": "CompanyAddress",
                                    "required": [
                                      "adresse",
                                      "postnummer",
                                      "poststed",
                                      "kommunenummer",
                                      "land"
                                    ],
                                    "properties": {
                                      "adresse": {
                                        "type": "array",
                                        "description": "Adresselinjer (gateadresse, etasje, etc.).",
                                        "items": {
                                          "type": "string"
                                        },
                                        "minItems": 0,
                                        "maxItems": 3
                                      },
                                      "postnummer": {
                                        "type": "string",
                                        "pattern": "^\\d{4}$",
                                        "description": "Norsk postnummer (4 siffer)."
                                      },
                                      "poststed": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "kommunenummer": {
                                        "type": "string",
                                        "pattern": "^\\d{4}$",
                                        "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                                      },
                                      "land": {
                                        "type": "string",
                                        "enum": [
                                          "NO"
                                        ],
                                        "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                                      }
                                    },
                                    "example": {
                                      "adresse": [
                                        "Akersveien 26"
                                      ],
                                      "postnummer": "0177",
                                      "poststed": "Oslo",
                                      "kommunenummer": "0301",
                                      "land": "NO"
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "Registrert forretningsadresse, eller `null` når registeret ikke fører en\nkomplett adresse (slettede/fusjonerte enheter, enkelte\nutenlandsregistrerte). Vi lyver ikke med et tomt adresse-skall (#4255).\n"
                              },
                              "postadresse": {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "title": "CompanyAddress",
                                    "required": [
                                      "adresse",
                                      "postnummer",
                                      "poststed",
                                      "kommunenummer",
                                      "land"
                                    ],
                                    "properties": {
                                      "adresse": {
                                        "type": "array",
                                        "description": "Adresselinjer (gateadresse, etasje, etc.).",
                                        "items": {
                                          "type": "string"
                                        },
                                        "minItems": 0,
                                        "maxItems": 3
                                      },
                                      "postnummer": {
                                        "type": "string",
                                        "pattern": "^\\d{4}$",
                                        "description": "Norsk postnummer (4 siffer)."
                                      },
                                      "poststed": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "kommunenummer": {
                                        "type": "string",
                                        "pattern": "^\\d{4}$",
                                        "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                                      },
                                      "land": {
                                        "type": "string",
                                        "enum": [
                                          "NO"
                                        ],
                                        "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                                      }
                                    },
                                    "example": {
                                      "adresse": [
                                        "Akersveien 26"
                                      ],
                                      "postnummer": "0177",
                                      "poststed": "Oslo",
                                      "kommunenummer": "0301",
                                      "land": "NO"
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "Postadresse hvis forskjellig fra forretningsadresse."
                              },
                              "kontakt": {
                                "type": "object",
                                "description": "Kontaktinformasjon (alle felter kan være null).",
                                "required": [
                                  "epost",
                                  "telefon",
                                  "hjemmeside"
                                ],
                                "properties": {
                                  "epost": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "format": "email"
                                  },
                                  "telefon": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "hjemmeside": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "format": "uri"
                                  }
                                }
                              },
                              "naeringskode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Primært NACE-nummer (f.eks. `84.130`).",
                                "example": "84.130"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "aktiv",
                                  "konkurs",
                                  "under_avvikling",
                                  "slettet"
                                ],
                                "description": "**Avledet status** — autoritativt KYB-/screening-signal. Presedens\n(høyest først): `slettet` (fjernet/fusjonert fra registeret) → `konkurs`\n→ `under_avvikling` → `aktiv`. En slettet enhet er terminal uansett\ngjenværende risiko-flagg. `under_avvikling` dekker også tvangsavvikling i\nden kanoniske modellen. De rå indikatorene `konkurs`/`underAvvikling`/\n`slettetIso` beholdes ved siden av (#4254).\n",
                                "example": "aktiv"
                              },
                              "konkurs": {
                                "type": "boolean",
                                "description": "**Risiko-flagg.** `true` hvis selskapet er registrert konkurs i Brreg.\nDirekte screening-/KYB-relevant — agenter som vurderer motparter bør lese\ndette feltet.\n",
                                "example": false
                              },
                              "underAvvikling": {
                                "type": "boolean",
                                "description": "**Risiko-flagg.** `true` hvis selskapet er under avvikling. Som `konkurs`\net konkret bool-signal for due diligence.\n",
                                "example": false
                              },
                              "slettetIso": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "**Risiko-flagg.** ISO-8601 slettedato hvis enheten er slettet/fusjonert i\nregisteret, ellers `null`. Driver `status:\"slettet\"`. En slettet motpart\nsom presenteres som aktiv er falsk trygghet i KYB-sjekken (#4254).\n",
                                "example": null
                              },
                              "sistHentetIso": {
                                "type": "string",
                                "minLength": 20,
                                "description": "Hentet-tidspunkt fra Brreg, ISO-8601.",
                                "example": "2026-05-04T08:30:00Z"
                              },
                              "source": {
                                "type": "string",
                                "description": "Proveniens — hvilken kilde som leverte denne snapshoten (jf.\nexplainability-moat #74). For Tier 1: `brreg:enhetsregisteret`.\n",
                                "example": "brreg:enhetsregisteret"
                              },
                              "apiVersion": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Versjon av kilde-API observert da payloaden ble hentet. Brukes for\ndrift-deteksjon; `null` når kilden ikke eksponerer en versjonsmarkør.\n",
                                "example": null
                              }
                            },
                            "example": {
                              "orgnr": "974760673",
                              "nationalIdType": "ORGNR",
                              "country": "NO",
                              "navn": "Statens vegvesen",
                              "mvaNavn": null,
                              "selskapsform": "ANNET",
                              "antallAnsatte": 7500,
                              "stiftetIso": "1864-07-01",
                              "forretningsadresse": {
                                "adresse": [
                                  "Postboks 1010"
                                ],
                                "postnummer": "2605",
                                "poststed": "Lillehammer",
                                "kommunenummer": "3403",
                                "land": "NO"
                              },
                              "postadresse": null,
                              "kontakt": {
                                "epost": "firmapost@vegvesen.no",
                                "telefon": "+47 22 07 30 00",
                                "hjemmeside": "https://www.vegvesen.no"
                              },
                              "naeringskode": "84.130",
                              "status": "aktiv",
                              "konkurs": false,
                              "underAvvikling": false,
                              "slettetIso": null,
                              "sistHentetIso": "2026-05-04T08:30:00Z",
                              "source": "brreg:enhetsregisteret",
                              "apiVersion": null
                            }
                          }
                        }
                      }
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opaque base64url-encoded cursor for neste side (`{\"o\": <oppdateringsid>}`).\n`null` når listen er ferdig. Klient skal sende cursoren videre uten å\nforsøke å parse den.\n",
                      "example": "eyJvIjoxMjM0NTZ9"
                    },
                    "limit": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100,
                      "description": "Antall items per side. Default 50, cap 100. Echoes inn-parameter slik\nat klient kan verifisere at serveren respekterte verdien.\n",
                      "example": 50
                    },
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Echoes path-parameteren slik at responsen er self-contained.",
                      "example": "923609016"
                    },
                    "meta": {
                      "type": "object",
                      "description": "Kun til stede på tomme førstesider (#3459): skiller «selskapet har\ningen snapshots» fra «event-ingest er ikke aktiv». Når `meta.ingest.\ningestActive` er false skal et tomt svar IKKE tolkes som at\nselskapet mangler historikk.\n",
                      "properties": {
                        "ingest": {
                          "type": "object",
                          "required": [
                            "ingestActive",
                            "lastIngestAt",
                            "cursor"
                          ],
                          "properties": {
                            "ingestActive": {
                              "type": "boolean",
                              "description": "true når brreg-feed har committet cursor siste 24 t."
                            },
                            "lastIngestAt": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "date-time",
                              "description": "Siste cursor-commit, null hvis ingest aldri har kjørt."
                            },
                            "cursor": {
                              "type": [
                                "integer",
                                "null"
                              ],
                              "description": "Siste committede Brreg-oppdateringsid."
                            },
                            "note": {
                              "type": "string",
                              "description": "Menneskelesbar forklaring når ingest ikke er aktiv."
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig orgnr, limit eller cursor.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Firestore-leseringsfeil (typisk manglende composite-index).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{orgnr}/relations": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "getCompanyRelations",
        "summary": "Eierstruktur og styrenettverk for ett selskap",
        "description": "Returnerer relasjonsgrafen rundt `{orgnr}`:\n\n- **board.members** — aktivt styre/ledelse fra Brreg roller.\n- **board.interlocks** — andre selskaper der minst ett styremedlem\n  overlapper (1 hop, navnebasert person-søk). `interlocksNote` flagger\n  navnekollisjons-usikkerhet eller at person-søk var utilgjengelig.\n- **ownership.shareholders** — aksjonærer (Skatteetaten; `not_configured`\n  uten Maskinporten-credentials).\n- **ownership.lei** — GLEIF LEI direct/ultimate parent.\n- **subsidiaries** — datterselskaper via LEI direct-children der\n  tilgjengelig; `note` forklarer dekning utenfor LEI-grafen.\n\nPartiell suksess: feiler en kilde rapporteres den i `_sources` mens de\nøvrige returneres. Brreg 404 (primær) → 404. **Cache:** 1 time.\n",
        "security": [
          {
            "bearerAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Selskap funnet (full eller partiell relasjonsgraf).",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "private, max-age=3600"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "orgnr",
                    "company",
                    "relations",
                    "_sources",
                    "_generatedAt"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "example": "923609016"
                    },
                    "company": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "EQUINOR ASA"
                    },
                    "relations": {
                      "type": "object",
                      "properties": {
                        "board": {
                          "type": "object",
                          "properties": {
                            "members": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "role": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "example": "Styre"
                                  },
                                  "roleCode": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "example": "STYR"
                                  }
                                }
                              }
                            },
                            "interlocks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "orgnr": {
                                    "type": "string"
                                  },
                                  "company": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "sharedMembers": {
                                    "type": "integer",
                                    "example": 2
                                  }
                                }
                              }
                            },
                            "interlocksNote": {
                              "type": "string"
                            }
                          }
                        },
                        "ownership": {
                          "type": "object",
                          "properties": {
                            "shareholders": {
                              "description": "Aksjonærliste (Skatteetaten) eller null."
                            },
                            "lei": {
                              "type": "object",
                              "properties": {
                                "lei": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "directParent": {
                                  "type": [
                                    "object",
                                    "null"
                                  ],
                                  "properties": {
                                    "lei": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    }
                                  }
                                },
                                "ultimateParent": {
                                  "type": [
                                    "object",
                                    "null"
                                  ],
                                  "properties": {
                                    "lei": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "subsidiaries": {
                          "type": "object",
                          "properties": {
                            "count": {
                              "type": "integer",
                              "example": 0
                            },
                            "viaLei": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "lei": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                }
                              }
                            },
                            "note": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "_sources": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "ok",
                              "error",
                              "not_configured"
                            ]
                          },
                          "latencyMs": {
                            "type": "integer"
                          },
                          "error": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "_generatedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig organisasjonsnummer (må være 9 siffer).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Selskap finnes ikke i Brønnøysundregistrene.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/batch": {
      "post": {
        "tags": [
          "companies"
        ],
        "operationId": "postCompaniesBatch",
        "summary": "Batch-enrichment av N selskaper i ett kall",
        "description": "Beriker en liste på 1–50 organisasjonsnummer (100 med Bearer-token) i ett\nkall. Hvert oppslag kjøres parallelt med individuell timeout og rapporteres\nmed per-orgnr status. Svarer alltid 200 ved gyldig request (partiell\nsuksess) — feilende oppslag isoleres til sin egen rad.\n\n**Felter (`fields`):** begrenser hvilke enrichment-lag som hentes per\nselskap. Default `[\"basic\"]` (kun Brreg). Gyldige verdier: `basic`,\n`roles`, `financials`, `lei`, `wikidata`, `konsesjon`, `mva`, `aksjonaer`.\n\n**Grenser:** maks 50 orgnr per kall anonymt, 100 med Bearer-token.\nOver grensen → 429. I prod trekkes kvote × antall orgnr i CF-laget.\n\n**Per-oppslag timeout:** `timeout` (ms, default 3000, klemt til\n500–15000). Overskridelse gir `status: \"error\", error: \"upstream_timeout\"`.\n",
        "security": [
          {
            "bearerAuth": []
          },
          {}
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "orgnrs"
                ],
                "properties": {
                  "orgnrs": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 100,
                    "items": {
                      "type": "string",
                      "pattern": "^\\d{9}$"
                    },
                    "example": [
                      "923609016",
                      "995310568",
                      "974760843"
                    ]
                  },
                  "fields": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "roles",
                        "financials",
                        "lei",
                        "wikidata",
                        "konsesjon",
                        "mva",
                        "aksjonaer"
                      ]
                    },
                    "default": [
                      "basic"
                    ],
                    "example": [
                      "basic",
                      "roles",
                      "financials"
                    ]
                  },
                  "timeout": {
                    "type": "integer",
                    "minimum": 500,
                    "maximum": 15000,
                    "default": 3000,
                    "description": "Per-oppslag timeout i millisekunder."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Batch behandlet (full eller partiell suksess).",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "private, max-age=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "results",
                    "meta"
                  ],
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "orgnr",
                          "status"
                        ],
                        "properties": {
                          "orgnr": {
                            "type": "string",
                            "example": "923609016"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "ok",
                              "not_found",
                              "error"
                            ]
                          },
                          "error": {
                            "type": "string",
                            "example": "upstream_timeout"
                          },
                          "data": {
                            "type": "object",
                            "description": "Enrichet selskapsdata (samme form som\n/api/v1/company/{orgnr} sitt `data`-objekt). Til stede\nkun ved `status: ok`. Felter avhenger av `fields`:\nbrreg, roller, regnskap, lei, wikidata, konsesjon, mva,\naksjonaer.\n"
                          },
                          "_sources": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "object",
                              "properties": {
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "ok",
                                    "error",
                                    "not_configured"
                                  ]
                                },
                                "latencyMs": {
                                  "type": "integer"
                                },
                                "cacheHit": {
                                  "type": "boolean"
                                },
                                "error": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "meta": {
                      "type": "object",
                      "required": [
                        "total",
                        "ok",
                        "errors",
                        "latencyMs"
                      ],
                      "properties": {
                        "total": {
                          "type": "integer",
                          "example": 3
                        },
                        "ok": {
                          "type": "integer",
                          "example": 1
                        },
                        "errors": {
                          "type": "integer",
                          "example": 1
                        },
                        "notFound": {
                          "type": "integer",
                          "example": 1
                        },
                        "latencyMs": {
                          "type": "integer",
                          "example": 1234
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig body (`orgnrs` mangler/tom eller ugyldig JSON).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "405": {
            "description": "Feil HTTP-metode (kun POST er tillatt). Svaret har `Allow`-header\n(RFC 9110 §15.5.6) og strukturert JSON-kropp\n`{error: \"method_not_allowed\", code, allow, message}` (#3421).\n",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet (`POST`).",
                "schema": {
                  "type": "string",
                  "example": "POST"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "code",
                    "allow",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "enum": [
                        "method_not_allowed"
                      ]
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "method_not_allowed"
                      ]
                    },
                    "allow": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "POST"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "For mange orgnr i batch (over per-kall-grensen).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "example": 429
                    },
                    "detail": {
                      "type": "string"
                    },
                    "limits": {
                      "type": "object",
                      "properties": {
                        "anonymous": {
                          "type": "integer",
                          "example": 50
                        },
                        "authenticated": {
                          "type": "integer",
                          "example": 100
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/company/{orgnr}": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "getCompanyBatch",
        "summary": "Aggregert selskapsprofil — Brreg + roller + regnskap + LEI + Wikidata",
        "description": "Aggregert respons for selskapet `{orgnr}`. Brreg er primærkilde og\npåkrevd; alle andre kilder kjøres parallelt og partiell-feiler\ngracefully (én feilende kilde gir tom data + error på den kilden,\nikke 502 for hele batch).\n\n**Respons:**\n```\n{\n  data: {\n    brreg?: ...,     // Brreg base (primær)\n    roller?: ...,    // Brreg roller\n    regnskap?: [],   // Siste regnskap fra Brreg-regnskap\n    lei?: ...,       // GLEIF LEI-oppslag\n    wikidata?: ...,  // Wikidata-utvidelse\n  },\n  _sources: {\n    [navn]: { status, latencyMs, cacheHit, error? }\n  },\n  _generatedAt: \"2026-05-26T12:00:00Z\"\n}\n```\n\n**Rate-limit:** 50/min for autentiserte brukere (strengere enn\nindividuelle endepunkter siden hvert kall trigger 5+ parallelle\nfetches mot upstream).\n\n**Cache:** 60s for hele batch. Hver underliggende kilde har sin egen\nTTL og kan returnere cache-hit (markert i `_sources.<kilde>.cacheHit`).\n",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Selskap funnet (full eller partiell aggregering).",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "private, max-age=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data",
                    "_sources",
                    "_generatedAt"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "description": "Aggregert per-kilde-data. Hver nøkkel kan mangle hvis kilden feilet.",
                      "properties": {
                        "brreg": {
                          "description": "Brreg enhetsregister (primærkilde)."
                        },
                        "roller": {
                          "description": "Brreg-roller-respons."
                        },
                        "regnskap": {
                          "type": "array",
                          "description": "Liste med siste regnskap (max 1 element)."
                        },
                        "lei": {
                          "description": "GLEIF LEI-oppslag."
                        },
                        "wikidata": {
                          "description": "Wikidata-utvidelse (kan være null)."
                        }
                      }
                    },
                    "_sources": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object",
                        "required": [
                          "status",
                          "latencyMs",
                          "cacheHit"
                        ],
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "ok",
                              "error",
                              "not_configured"
                            ]
                          },
                          "latencyMs": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "cacheHit": {
                            "type": "boolean"
                          },
                          "error": {
                            "type": "string",
                            "description": "Feilmelding på norsk. Bare satt når status=error."
                          }
                        }
                      }
                    },
                    "_generatedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO-8601-tidsstempel for når aggregeringen ble bygget."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig organisasjonsnummer (må være 9 siffer).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Selskap finnes ikke i Brreg.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit overskredet (50/min for batch-endepunkter).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/sources": {
      "get": {
        "tags": [
          "sources",
          "meta"
        ],
        "operationId": "listSources",
        "summary": "List alle kilder ketl kjenner til",
        "description": "Returnerer alle kilder med status, segmenter og dokumentasjons-lenker.\nFiltreres valgfritt på `country`, `status` og/eller `segment` (#2339).\n\n`segments`-feltet inneholder ICP-segmenter kilden er relevant for\n(f.eks. `revisor`, `compliance`, `journalist`). Ikke-eksplisitte kildesegmenter\nutledes fra kilde-kategorien via kategori-defaults.\n",
        "parameters": [
          {
            "in": "query",
            "name": "country",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "SE",
                "DK",
                "FI",
                "IS",
                "EU"
              ]
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "connected",
                "planned",
                "scraping",
                "deprecated"
              ]
            }
          },
          {
            "in": "query",
            "name": "segment",
            "required": false,
            "description": "Filtrer på ICP-segment-slug (kebab-case). Returnerer kun kilder\nrelevante for det gitte segmentet. Ukjent segment gir tom liste (200),\nikke feil. Eksempel: `?segment=revisor`, `?segment=compliance`.\n",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,40}$",
              "example": "revisor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Kilde-liste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "items",
                    "total"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "title": "Source",
                        "required": [
                          "key",
                          "name",
                          "status",
                          "country"
                        ],
                        "properties": {
                          "key": {
                            "type": "string",
                            "title": "SourceKey",
                            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
                            "enum": [
                              "brreg",
                              "ssb",
                              "norges-bank",
                              "enhetsregister",
                              "proff",
                              "bygg-anlegg",
                              "eksportor",
                              "kartverket",
                              "sodir",
                              "ais",
                              "artskart",
                              "avinor",
                              "barentswatch",
                              "elhub",
                              "fhi",
                              "finanstilsynet",
                              "finansinspektionen-se",
                              "finanstilsynet-dk",
                              "fisheries",
                              "fri-nettleie",
                              "frost",
                              "geonorge",
                              "hoyesterett",
                              "konkurs",
                              "kommunedatabasen",
                              "kostra",
                              "lakselus",
                              "lovtidend",
                              "luftkvalitet",
                              "lysingsblad",
                              "mattilsynet-smilefjes",
                              "met",
                              "nav",
                              "nb-dhlab",
                              "norske-utslipp",
                              "nve",
                              "nvdb",
                              "oslobors",
                              "patentstyret",
                              "politiloggen",
                              "regjeringen",
                              "rss-news",
                              "sdir",
                              "stortinget",
                              "stromprise",
                              "udir",
                              "connectors",
                              "data-quality",
                              "audit",
                              "companies",
                              "persons",
                              "kg",
                              "sync",
                              "config",
                              "sync-state",
                              "storage",
                              "discovery",
                              "lineage",
                              "backup",
                              "metrics",
                              "dashboard",
                              "brreg-endringer",
                              "nav-grunnbelop"
                            ]
                          },
                          "name": {
                            "type": "string",
                            "description": "Menneskelig navn på kilden.",
                            "example": "Brønnøysundregistrene Enhetsregisteret"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 500
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "connected",
                              "planned",
                              "scraping",
                              "deprecated"
                            ],
                            "description": "`connected`  = produserer ekte data via /api/data eller /api/v1\n`planned`    = listet i konfig, men ikke koblet til\n`scraping`   = ingen åpent API; data kommer fra scraper-flåten (#214)\n`deprecated` = under avvikling\n"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "NO",
                              "SE",
                              "DK",
                              "FI",
                              "IS",
                              "EU"
                            ],
                            "description": "Hvilket land/region kilden dekker."
                          },
                          "segments": {
                            "type": "array",
                            "description": "ICP-segmenter denne kilden er primært relevant for (#98).",
                            "items": {
                              "type": "string",
                              "enum": [
                                "revisor",
                                "konsulent",
                                "journalist",
                                "kommune",
                                "compliance",
                                "aktuar",
                                "eiendom",
                                "utvikler",
                                "academia",
                                "pe-vc",
                                "csrd",
                                "ai-act",
                                "eksportor",
                                "casp",
                                "bygg-anlegg"
                              ]
                            }
                          },
                          "docsUrl": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "uri",
                            "description": "Lenke til kildens egen API-dokumentasjon (data.brreg.no, ws.geonorge.no, ...)."
                          },
                          "mcpSlugs": {
                            "type": "array",
                            "description": "MCP-server-slug(er) (`/api/v1/_meta/mcp`) som betjener denne kilden (#3915).\nTom liste om kilden ikke har en publisert MCP-server. Relasjonen er 1:mange\n— én kilde kan betjenes av flere servere (f.eks. `brreg` av både `brreg` og\n`selskap`). Symmetrisk backlink til MCP-katalogens `servers[].sourceKey`\nslik at en agent kan krysse kilde → MCP deterministisk uten å gjette\nslug-mapping.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "brreg",
                              "selskap"
                            ]
                          }
                        },
                        "example": {
                          "key": "brreg",
                          "name": "Brønnøysundregistrene Enhetsregisteret",
                          "description": "Norsk selskapsregister med ~1M aktive juridiske enheter.",
                          "status": "connected",
                          "country": "NO",
                          "segments": [
                            "revisor",
                            "compliance",
                            "journalist"
                          ],
                          "docsUrl": "https://data.brreg.no/enhetsregisteret/api/dokumentasjon/no/index.html",
                          "mcpSlugs": [
                            "brreg",
                            "selskap"
                          ]
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall (etter ev. filter)."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/sources/{key}": {
      "parameters": [
        {
          "in": "path",
          "name": "key",
          "required": true,
          "description": "Kilde-nøkkel (kebab-case). Se `Source.key` for full liste.",
          "example": "brreg",
          "schema": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          }
        }
      ],
      "get": {
        "tags": [
          "sources",
          "meta"
        ],
        "operationId": "getSourceByKey",
        "summary": "Hent én kilde-detalj",
        "description": "Returnerer detaljer om én kilde, inkludert MCP-verktøy, API-endepunkter\n(på kilden, ikke på vårt API), oppdateringsfrekvens og lisens.\n",
        "responses": {
          "200": {
            "description": "Kilde funnet.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Source",
                  "required": [
                    "key",
                    "name",
                    "status",
                    "country"
                  ],
                  "properties": {
                    "key": {
                      "type": "string",
                      "title": "SourceKey",
                      "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
                      "enum": [
                        "brreg",
                        "ssb",
                        "norges-bank",
                        "enhetsregister",
                        "proff",
                        "bygg-anlegg",
                        "eksportor",
                        "kartverket",
                        "sodir",
                        "ais",
                        "artskart",
                        "avinor",
                        "barentswatch",
                        "elhub",
                        "fhi",
                        "finanstilsynet",
                        "finansinspektionen-se",
                        "finanstilsynet-dk",
                        "fisheries",
                        "fri-nettleie",
                        "frost",
                        "geonorge",
                        "hoyesterett",
                        "konkurs",
                        "kommunedatabasen",
                        "kostra",
                        "lakselus",
                        "lovtidend",
                        "luftkvalitet",
                        "lysingsblad",
                        "mattilsynet-smilefjes",
                        "met",
                        "nav",
                        "nb-dhlab",
                        "norske-utslipp",
                        "nve",
                        "nvdb",
                        "oslobors",
                        "patentstyret",
                        "politiloggen",
                        "regjeringen",
                        "rss-news",
                        "sdir",
                        "stortinget",
                        "stromprise",
                        "udir",
                        "connectors",
                        "data-quality",
                        "audit",
                        "companies",
                        "persons",
                        "kg",
                        "sync",
                        "config",
                        "sync-state",
                        "storage",
                        "discovery",
                        "lineage",
                        "backup",
                        "metrics",
                        "dashboard",
                        "brreg-endringer",
                        "nav-grunnbelop"
                      ]
                    },
                    "name": {
                      "type": "string",
                      "description": "Menneskelig navn på kilden.",
                      "example": "Brønnøysundregistrene Enhetsregisteret"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "maxLength": 500
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "connected",
                        "planned",
                        "scraping",
                        "deprecated"
                      ],
                      "description": "`connected`  = produserer ekte data via /api/data eller /api/v1\n`planned`    = listet i konfig, men ikke koblet til\n`scraping`   = ingen åpent API; data kommer fra scraper-flåten (#214)\n`deprecated` = under avvikling\n"
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "NO",
                        "SE",
                        "DK",
                        "FI",
                        "IS",
                        "EU"
                      ],
                      "description": "Hvilket land/region kilden dekker."
                    },
                    "segments": {
                      "type": "array",
                      "description": "ICP-segmenter denne kilden er primært relevant for (#98).",
                      "items": {
                        "type": "string",
                        "enum": [
                          "revisor",
                          "konsulent",
                          "journalist",
                          "kommune",
                          "compliance",
                          "aktuar",
                          "eiendom",
                          "utvikler",
                          "academia",
                          "pe-vc",
                          "csrd",
                          "ai-act",
                          "eksportor",
                          "casp",
                          "bygg-anlegg"
                        ]
                      }
                    },
                    "docsUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri",
                      "description": "Lenke til kildens egen API-dokumentasjon (data.brreg.no, ws.geonorge.no, ...)."
                    },
                    "mcpSlugs": {
                      "type": "array",
                      "description": "MCP-server-slug(er) (`/api/v1/_meta/mcp`) som betjener denne kilden (#3915).\nTom liste om kilden ikke har en publisert MCP-server. Relasjonen er 1:mange\n— én kilde kan betjenes av flere servere (f.eks. `brreg` av både `brreg` og\n`selskap`). Symmetrisk backlink til MCP-katalogens `servers[].sourceKey`\nslik at en agent kan krysse kilde → MCP deterministisk uten å gjette\nslug-mapping.\n",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "brreg",
                        "selskap"
                      ]
                    }
                  },
                  "example": {
                    "key": "brreg",
                    "name": "Brønnøysundregistrene Enhetsregisteret",
                    "description": "Norsk selskapsregister med ~1M aktive juridiske enheter.",
                    "status": "connected",
                    "country": "NO",
                    "segments": [
                      "revisor",
                      "compliance",
                      "journalist"
                    ],
                    "docsUrl": "https://data.brreg.no/enhetsregisteret/api/dokumentasjon/no/index.html",
                    "mcpSlugs": [
                      "brreg",
                      "selskap"
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig `key`-parameter (må være kebab-case, lengde 1–41).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Kilden er ikke kjent.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/apps": {
      "get": {
        "tags": [
          "apps",
          "meta"
        ],
        "operationId": "listApps",
        "summary": "List alle analyseapper med maskinlesbar dataspesifikasjon",
        "description": "Returnerer hver analyseapp med:\n\n- Basis-metadata (slug, title, route, tier, category)\n- `sources[]` — kilde-IDer (samme som UI-katalogen)\n- `dataSpec[]` — maskinlesbar binding per kilde med endpoints, fields,\n  role (`primary`|`enrichment`|`crossref`) og refresh-kadens\n\n`summary.withDataSpec` viser hvor mange apper som har fullført\n`dataSpec`-spesifikasjon (er-tall som øker etter hvert som apper\nbackfilles per #3392).\n",
        "parameters": [
          {
            "in": "query",
            "name": "hasDataSpec",
            "required": false,
            "description": "Filtrer på om appen har `dataSpec` definert.",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          },
          {
            "in": "query",
            "name": "source",
            "required": false,
            "description": "Returner kun apper som bruker denne kilde-IDen.",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,60}$",
              "example": "brreg"
            }
          },
          {
            "in": "query",
            "name": "tier",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "free",
                "pro"
              ]
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "description": "Filtrer på app-kategori (samme nøkkel som DataSource.category).",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z][A-Za-z0-9-]{0,40}$",
              "example": "Naeringsliv"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "App-liste + summary.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "items",
                    "summary"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "slug",
                          "title",
                          "description",
                          "category",
                          "tier",
                          "route",
                          "badges",
                          "editorsChoice",
                          "sources",
                          "dataSpec",
                          "dataSpecValid",
                          "dataSpecErrors",
                          "runnable",
                          "run"
                        ],
                        "properties": {
                          "slug": {
                            "type": "string",
                            "example": "selskap"
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "tier": {
                            "type": "string",
                            "enum": [
                              "free",
                              "pro"
                            ]
                          },
                          "route": {
                            "type": "string",
                            "example": "/apper/selskap"
                          },
                          "badges": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "ny",
                                "populaer"
                              ]
                            }
                          },
                          "editorsChoice": {
                            "type": "boolean"
                          },
                          "addedAt": {
                            "type": "string",
                            "description": "ISO YYYY-MM eller YYYY-MM-DD."
                          },
                          "sources": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "dataSpec": {
                            "type": [
                              "array",
                              "null"
                            ],
                            "items": {
                              "type": "object",
                              "required": [
                                "source",
                                "endpoints",
                                "fields",
                                "role"
                              ],
                              "properties": {
                                "source": {
                                  "type": "string",
                                  "description": "Kilde-ID, må finnes i DATA_SOURCES."
                                },
                                "endpoints": {
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "description": "Format: `/api/connectors/<src>/...`,\n`/api/v1/...` eller `mcp:<server>:<tool>`.\n"
                                  }
                                },
                                "fields": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "role": {
                                  "type": "string",
                                  "enum": [
                                    "primary",
                                    "enrichment",
                                    "crossref"
                                  ]
                                },
                                "joinKey": {
                                  "type": "string"
                                },
                                "refresh": {
                                  "type": "string",
                                  "enum": [
                                    "realtime",
                                    "daily",
                                    "weekly",
                                    "monthly",
                                    "yearly",
                                    "static"
                                  ]
                                }
                              }
                            }
                          },
                          "dataSpecValid": {
                            "type": "boolean"
                          },
                          "dataSpecErrors": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "runnable": {
                            "type": "boolean",
                            "description": "Kan appen kjøres via `POST|GET /api/v1/apps/{slug}/run`?\nTrue kun når `dataSpec` finnes og validerer.\n"
                          },
                          "run": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Eksplisitt kjør-lenke (#3951). `null` når `runnable` er\nfalse (f.eks. `api-status`). URL-en bygges fra\nrequest-origin, ikke hardkodet domene.\n",
                            "required": [
                              "url",
                              "methods"
                            ],
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "example": "https://data.ketl.no/api/v1/apps/selskap/run"
                              },
                              "methods": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "GET",
                                    "POST"
                                  ]
                                },
                                "example": [
                                  "GET",
                                  "POST"
                                ]
                              }
                            }
                          }
                        }
                      }
                    },
                    "summary": {
                      "type": "object",
                      "required": [
                        "total",
                        "withDataSpec",
                        "returned"
                      ],
                      "properties": {
                        "total": {
                          "type": "integer",
                          "description": "Totalt antall analyseapper."
                        },
                        "withDataSpec": {
                          "type": "integer",
                          "description": "Antall apper med gyldig `dataSpec`."
                        },
                        "returned": {
                          "type": "integer",
                          "description": "Antall i `items` (etter filter)."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig query-parameter.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/apps/{slug}": {
      "get": {
        "tags": [
          "apps",
          "meta"
        ],
        "operationId": "getAppBySlug",
        "summary": "Hent én analyseapp med full dataSpec",
        "description": "Returnerer én analyseapp med full `dataSpec`-binding og\nvalideringsresultat. Brukes av agenter som vil hente detaljer\nom en spesifikk app uten å laste hele katalogen.\n",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,60}$",
              "example": "selskap"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "App-detalj.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "slug",
                    "title",
                    "description",
                    "category",
                    "tier",
                    "route",
                    "badges",
                    "editorsChoice",
                    "sources",
                    "dataSpec",
                    "dataSpecValid",
                    "dataSpecErrors",
                    "runnable",
                    "run"
                  ],
                  "properties": {
                    "slug": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "category": {
                      "type": "string"
                    },
                    "tier": {
                      "type": "string",
                      "enum": [
                        "free",
                        "pro"
                      ]
                    },
                    "route": {
                      "type": "string"
                    },
                    "badges": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "ny",
                          "populaer"
                        ]
                      }
                    },
                    "editorsChoice": {
                      "type": "boolean"
                    },
                    "addedAt": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "dataSpec": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object"
                      }
                    },
                    "dataSpecValid": {
                      "type": "boolean"
                    },
                    "dataSpecErrors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "runnable": {
                      "type": "boolean",
                      "description": "Kjørbar via `/api/v1/apps/{slug}/run`? (#3951)"
                    },
                    "run": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "description": "Eksplisitt kjør-lenke (#3951); `null` når ikke kjørbar.",
                      "required": [
                        "url",
                        "methods"
                      ],
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "methods": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "GET",
                              "POST"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig slug-format.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "App finnes ikke.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/apps/{slug}/run": {
      "get": {
        "tags": [
          "apps"
        ],
        "operationId": "runAppGet",
        "summary": "Kjør en analyseapp og få sammensatt resultat (params i query)",
        "description": "Tolker appens `dataSpec` runtime, henter hver kilde-binding og returnerer\nett sammensatt resultat med per-kilde-herkomst (`_sources`) og\n`partial`-flagg. Generisk, read-only kompositt — ekte kryss-kilde-join på\n`joinKey` er overlatt til kalleren (herkomst eksponerer `joinKey`/`role`).\n\nInndata utledes fra `dataSpec[].endpoints` (path-/query-placeholders).\nParametere som ikke er placeholders (f.eks. `q`, `limit`, `year`)\nvideresendes som filtre til connectoren. Manglende påkrevd parameter →\n400 med `requiredParams` **og** `paramSpecs` (#3823): én typet spec per\npåkrevd param med `type`, `description`, kjørbart `example` og evt. `enum`/\n`discover` — slik at en agent kan rette og retry i ett forsøk uten å gjette.\nSamme `paramSpecs` eksponeres per app i `GET /api/v1/_meta/apps`.\n\nStatus-kontrakt for `primary`-kilder (#3736), skilt på faktisk upstream-\nstatus: `404` «ingen treff» → 200 med `data.<kilde>` = null og\n`partial: true` (gyldig negativt svar). `503 not_configured` → 503\n(`source-not-configured`, konfig-/entitlement-forhold). Ekte 5xx/timeout →\n502 (`primary-source-failed`). Degradert `enrichment`/`crossref` → 200 med\n`partial: true`.\n",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,60}$",
              "example": "konkursbarometer"
            }
          },
          {
            "in": "query",
            "name": "orgnr",
            "required": false,
            "description": "Eksempel-parameter — faktiske parametere varierer per app (se `requiredParams`).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sammensatt app-resultat med per-kilde-herkomst.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "app",
                    "params",
                    "data",
                    "_sources",
                    "partial",
                    "_generatedAt"
                  ],
                  "properties": {
                    "app": {
                      "type": "object",
                      "properties": {
                        "slug": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "route": {
                          "type": "string"
                        },
                        "category": {
                          "type": "string"
                        },
                        "tier": {
                          "type": "string",
                          "enum": [
                            "free",
                            "pro"
                          ]
                        }
                      }
                    },
                    "params": {
                      "type": "object",
                      "description": "Parametrene som ble brukt (placeholders + videresendte filtre).",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "data": {
                      "type": "object",
                      "description": "Rådata per kilde-nøkkel (vanligvis `source`).",
                      "additionalProperties": true
                    },
                    "_sources": {
                      "type": "object",
                      "description": "Per-kilde-herkomst for hver dataSpec-binding.",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "source": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "primary",
                              "enrichment",
                              "crossref"
                            ]
                          },
                          "refresh": {
                            "type": "string"
                          },
                          "joinKey": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "status": {
                            "description": "HTTP-status (tall) eller symbolsk feilkode (`missing_params`/`error`)."
                          },
                          "ok": {
                            "type": "boolean"
                          },
                          "latencyMs": {
                            "type": "integer"
                          },
                          "cacheHit": {
                            "type": "boolean"
                          },
                          "error": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "partial": {
                      "type": "boolean",
                      "description": "`true` hvis en enrichment/crossref-kilde er degradert."
                    },
                    "_generatedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "apps"
        ],
        "operationId": "runAppPost",
        "summary": "Kjør en analyseapp (params i JSON-body)",
        "description": "Som GET, men parametere leses fra JSON-body (`{ \"params\": { ... } }`\neller flat `{ ... }`). Query-string og body slås sammen (body vinner).\nManglende påkrevd parameter → 400 med `requiredParams` + `paramSpecs`\n(typet spec med `example`/`enum`/`discover` per param, #3823).\n",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,60}$",
              "example": "selskap"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "params": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "orgnr": "923609016"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sammensatt app-resultat med per-kilde-herkomst.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "app",
                    "params",
                    "data",
                    "_sources",
                    "partial",
                    "_generatedAt"
                  ],
                  "properties": {
                    "app": {
                      "type": "object",
                      "properties": {
                        "slug": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "route": {
                          "type": "string"
                        },
                        "category": {
                          "type": "string"
                        },
                        "tier": {
                          "type": "string",
                          "enum": [
                            "free",
                            "pro"
                          ]
                        }
                      }
                    },
                    "params": {
                      "type": "object",
                      "description": "Parametrene som ble brukt (placeholders + videresendte filtre).",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "data": {
                      "type": "object",
                      "description": "Rådata per kilde-nøkkel (vanligvis `source`).",
                      "additionalProperties": true
                    },
                    "_sources": {
                      "type": "object",
                      "description": "Per-kilde-herkomst for hver dataSpec-binding.",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "source": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "primary",
                              "enrichment",
                              "crossref"
                            ]
                          },
                          "refresh": {
                            "type": "string"
                          },
                          "joinKey": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "status": {
                            "description": "HTTP-status (tall) eller symbolsk feilkode (`missing_params`/`error`)."
                          },
                          "ok": {
                            "type": "boolean"
                          },
                          "latencyMs": {
                            "type": "integer"
                          },
                          "cacheHit": {
                            "type": "boolean"
                          },
                          "error": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "partial": {
                      "type": "boolean",
                      "description": "`true` hvis en enrichment/crossref-kilde er degradert."
                    },
                    "_generatedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/health": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getHealth",
        "summary": "Health-check",
        "description": "Returnerer status for ketl + alle kritiske upstream-avhengigheter.\nBrukes av admin-dashboard og eksterne uptime-bots.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "ok eller degraded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Health",
                  "required": [
                    "status",
                    "version",
                    "timestamp"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok",
                        "degraded",
                        "down"
                      ]
                    },
                    "version": {
                      "type": "string",
                      "description": "Build-SHA + tidstempel (`<sha>-<iso>`).",
                      "example": "c36f542-2026-05-04T12:00:00Z"
                    },
                    "timestamp": {
                      "type": "string",
                      "minLength": 20,
                      "description": "ISO-8601 server-tid."
                    },
                    "upstream": {
                      "type": "object",
                      "description": "Status for hver upstream-avhengighet. `database` rapporterer Cloud\nSQL-tilstand (#3304): \"unknown\" til PG_CONNECTION_STRING er bundet\n(#3302/#3303), deretter \"ok\"/\"down\" fra `dbHealth()`. Detaljer\n(latency, feilmelding) ligger under `diagnostics.database`.\n",
                      "additionalProperties": {
                        "type": "string",
                        "enum": [
                          "ok",
                          "degraded",
                          "down",
                          "unknown"
                        ]
                      },
                      "example": {
                        "service": "ok",
                        "database": "ok",
                        "firestore": "ok",
                        "stripe": "ok"
                      }
                    },
                    "diagnostics": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "description": "ketl-spesifikke diagnostiske felt (utenfor offentlig RFC-kontrakt).\nBrukes av admin-UI og uptime-bots for å se proxy-tilstand. Kan\ninneholde proxyBaseUrl, proxyKnownDead, proxyKnownDeadIssue (#414).\n",
                      "additionalProperties": true,
                      "example": {
                        "proxyBaseUrl": "https://data.ketl.no",
                        "proxyBaseUrlSource": "prod-default",
                        "proxyKnownDead": false,
                        "proxyKnownDeadIssue": null
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "down (alle upstream nede).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Health",
                  "required": [
                    "status",
                    "version",
                    "timestamp"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok",
                        "degraded",
                        "down"
                      ]
                    },
                    "version": {
                      "type": "string",
                      "description": "Build-SHA + tidstempel (`<sha>-<iso>`).",
                      "example": "c36f542-2026-05-04T12:00:00Z"
                    },
                    "timestamp": {
                      "type": "string",
                      "minLength": 20,
                      "description": "ISO-8601 server-tid."
                    },
                    "upstream": {
                      "type": "object",
                      "description": "Status for hver upstream-avhengighet. `database` rapporterer Cloud\nSQL-tilstand (#3304): \"unknown\" til PG_CONNECTION_STRING er bundet\n(#3302/#3303), deretter \"ok\"/\"down\" fra `dbHealth()`. Detaljer\n(latency, feilmelding) ligger under `diagnostics.database`.\n",
                      "additionalProperties": {
                        "type": "string",
                        "enum": [
                          "ok",
                          "degraded",
                          "down",
                          "unknown"
                        ]
                      },
                      "example": {
                        "service": "ok",
                        "database": "ok",
                        "firestore": "ok",
                        "stripe": "ok"
                      }
                    },
                    "diagnostics": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "description": "ketl-spesifikke diagnostiske felt (utenfor offentlig RFC-kontrakt).\nBrukes av admin-UI og uptime-bots for å se proxy-tilstand. Kan\ninneholde proxyBaseUrl, proxyKnownDead, proxyKnownDeadIssue (#414).\n",
                      "additionalProperties": true,
                      "example": {
                        "proxyBaseUrl": "https://data.ketl.no",
                        "proxyBaseUrlSource": "prod-default",
                        "proxyKnownDead": false,
                        "proxyKnownDeadIssue": null
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/openapi.json": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getOpenApiSpec",
        "summary": "Hent OpenAPI 3.1-spec (bundled JSON)",
        "description": "Returnerer den bundlede OpenAPI 3.1-spec for ketl Unified API.\nBrukes av Swagger UI, ReDoc, openapi-explorer-extensions og lignende\nklienter som vil generere SDK-er fra en stabil URL.\n\nInnholdet er identisk med `openapi/bundled.json` på `main`-branchen\n+ alle `$ref`-fragmenter inlinet via `scripts/bundle-openapi.mjs`.\n\nCache-Control: `public, max-age=3600` — spec endres sjelden.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 dokument (JSON).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "OpenAPI 3.1.0 dokument.",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/openapi.yaml": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getOpenApiSpecYaml",
        "summary": "Hent OpenAPI 3.1-spec (YAML)",
        "description": "YAML-variant av `/api/v1/_meta/openapi.json` — identisk innhold,\nserialisert som YAML for verktøy som foretrekker det.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 dokument (YAML).",
            "content": {
              "application/yaml": {
                "schema": {
                  "type": "string",
                  "description": "YAML-serialisert OpenAPI 3.1.0-dokument."
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/mcp": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMetaMcp",
        "summary": "MCP-server-katalog (Streamable HTTP)",
        "description": "Maskinlesbar katalog over alle MCP-servere ketl distribuerer — én per\nconnector-pakke. Agenter bruker denne for å oppdage hvilke verktøy som\nfinnes og hvordan de kobler seg på (transport, auth, endpoint-URL).\n\nKomplementerer `/api/mcp/tools` (flat verktøyliste med inputSchema).\n",
        "security": [],
        "responses": {
          "200": {
            "description": "MCP-katalog.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "transport",
                    "hubPageUrl",
                    "hubUrl",
                    "connect",
                    "total",
                    "servers"
                  ],
                  "properties": {
                    "transport": {
                      "type": "string",
                      "example": "streamable-http"
                    },
                    "spec": {
                      "type": "string",
                      "description": "MCP-spec-versjon."
                    },
                    "hubPageUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "HTML-landingsside for mennesker (data.ketl.no/mcp) — IKKE et MCP-endepunkt (#4037). Navnet sier eksplisitt at det er en *side*. POST JSON-RPC hit gir HTML. Bruk `servers[].url` for å koble til.\n"
                    },
                    "hubUrl": {
                      "type": "string",
                      "format": "uri",
                      "deprecated": true,
                      "description": "Bakåtkompatibelt alias for `hubPageUrl` (#4037). Misvisende navn — leste som et kallbart endepunkt, men er hub-landings- siden. Bruk `hubPageUrl`.\n"
                    },
                    "hubUrlKind": {
                      "type": "string",
                      "enum": [
                        "landing-page"
                      ],
                      "description": "Eksplisitt: `hubPageUrl`/`hubUrl` er en landingsside, ikke et connect-endepunkt (#3908, #4037)."
                    },
                    "connect": {
                      "type": "object",
                      "description": "Connect-kontrakt for agenter (#3908) — connect-modellen er per-server.",
                      "properties": {
                        "model": {
                          "type": "string",
                          "enum": [
                            "per-server"
                          ]
                        },
                        "serverUrlField": {
                          "type": "string",
                          "example": "servers[].url"
                        },
                        "note": {
                          "type": "string"
                        }
                      }
                    },
                    "auth": {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "type": "string",
                          "example": "bearer"
                        },
                        "header": {
                          "type": "string",
                          "example": "Authorization"
                        },
                        "apiKeyUrl": {
                          "type": "string",
                          "format": "uri"
                        }
                      }
                    },
                    "serverCount": {
                      "type": "integer",
                      "description": "Antall MCP-servere (= servers.length)."
                    },
                    "toolCount": {
                      "type": "integer",
                      "description": "Antall verktøy summert over alle servere."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Antall MCP-servere (alias for serverCount)."
                    },
                    "servers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "slug": {
                            "type": "string",
                            "example": "met"
                          },
                          "sourceKey": {
                            "type": "string",
                            "description": "Kilde-katalogens `key` (`/api/v1/_meta/sources`) som denne\nMCP-serveren betjener — deterministisk backlink (#3915).\nSom regel lik `slug`; ved alias (MCP-slug ≠ kilde-key)\nbærer feltet kilde-key-en (f.eks. server `met` →\n`sourceKey: met-yr`).\n",
                            "example": "met-yr"
                          },
                          "name": {
                            "type": "string"
                          },
                          "owner": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "packageName": {
                            "type": "string",
                            "example": "@ketl/mcp-brreg"
                          },
                          "tier": {
                            "type": "string"
                          },
                          "license": {
                            "type": "string"
                          },
                          "available": {
                            "type": "boolean"
                          },
                          "tools": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "dataSourceUrl": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/tiers": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMetaTiers",
        "summary": "Plan-/tier-katalog (priser, grenser, features)",
        "description": "Maskinlesbar katalog over alle kommersielle tiers — pris (NOK/mnd),\ninkluderte MCP/API-kall per måned, rate-limit (kall/min), antall\ntilgjengelige datakilder, features og vilkår. Derivert fra den kanoniske\nkilde-til-sannheten `BILLING_TIERS`. Samme info som HTML `/pricing`\neksponerer — offentlig, ingen auth. Interne Stripe-IDer tas aldri med.\n\nAgent-first: bruk denne for å svare «hvilken tier trenger jeg», «hva\nkoster Pro» eller «hva er kall-grensen per tier» uten å parse HTML.\nMCP-paritet: `ketl.pricing.list` på plattform-MCP-serveren.\n",
        "security": [],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på tier-id (dev, agent, analytiker, team, enterprise, press, academic)."
          },
          {
            "name": "targetGroup",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på målgruppe-tag (f.eks. presse, ai-utvikler, akademia)."
          },
          {
            "name": "free",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "description": "true → kun gratis-tiers; false → kun betalte/custom."
          }
        ],
        "responses": {
          "200": {
            "description": "Tier-katalog.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "tiers",
                    "total",
                    "currency",
                    "dataSources"
                  ],
                  "properties": {
                    "total": {
                      "type": "integer",
                      "description": "Antall tiers i (filtrert) katalog."
                    },
                    "currency": {
                      "type": "string",
                      "example": "NOK"
                    },
                    "dataSources": {
                      "type": "object",
                      "description": "Kilde-katalog-størrelser `dataSourcesAvailable` deriveres fra.",
                      "properties": {
                        "free": {
                          "type": "integer"
                        },
                        "all": {
                          "type": "integer"
                        }
                      }
                    },
                    "tiers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "name",
                          "price",
                          "includedCallsPerMonth",
                          "requestsPerMinute",
                          "features"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "dev"
                          },
                          "name": {
                            "type": "string",
                            "example": "Dev"
                          },
                          "tagline": {
                            "type": "string"
                          },
                          "targetGroups": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "price": {
                            "type": "object",
                            "properties": {
                              "amount": {
                                "type": "integer",
                                "nullable": true,
                                "description": "NOK/mnd. null = custom (enterprise)."
                              },
                              "currency": {
                                "type": "string",
                                "example": "NOK"
                              },
                              "custom": {
                                "type": "boolean"
                              }
                            }
                          },
                          "minSeats": {
                            "type": "integer"
                          },
                          "includedCallsPerMonth": {
                            "type": "integer",
                            "nullable": true,
                            "description": "null = ubegrenset/custom."
                          },
                          "overageOrePerCall": {
                            "type": "integer",
                            "nullable": true,
                            "description": "Pris per kall over kvote (øre). null = ikke usage-priset."
                          },
                          "requestsPerMinute": {
                            "type": "integer"
                          },
                          "requiresApplication": {
                            "type": "boolean"
                          },
                          "dataSourcesAvailable": {
                            "type": "integer"
                          },
                          "features": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "terms": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig filter-parameter (problem+json)."
          }
        }
      }
    },
    "/api/v1/_meta/status": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMetaStatus",
        "summary": "Aggregert driftsstatus for plattformen",
        "description": "Fan-out-probe mot kjernekomponentene og aggregert tilstand. Brukes av\nstatussiden og uptime-bots. Resultatet caches in-process (`ttlSeconds`).\n",
        "security": [],
        "responses": {
          "200": {
            "description": "Driftsstatus.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "overall",
                    "components",
                    "generatedAt"
                  ],
                  "properties": {
                    "overall": {
                      "type": "string",
                      "enum": [
                        "operational",
                        "degraded",
                        "outage",
                        "unknown"
                      ]
                    },
                    "components": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "latencyMs": {
                            "type": "integer"
                          },
                          "httpStatus": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "incidents": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "generatedAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "ttlSeconds": {
                      "type": "integer",
                      "example": 60
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/health-summary": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMetaHealthSummary",
        "summary": "Helse-sammendrag for alle connectors",
        "description": "Aggregert helsetilstand per connector (ok/degraded/down/not_configured/\nsunset). Fan-out caches i 60 s in-memory; `force=1` tvinger frisk probe.\n",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": false,
            "description": "Filtrer til én connector-slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "force",
            "in": "query",
            "required": false,
            "description": "1 = tving frisk fan-out (omgå 60s-cache).",
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ],
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Helse-sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "totalConnectors",
                    "connectors"
                  ],
                  "properties": {
                    "totalConnectors": {
                      "type": "integer"
                    },
                    "ok": {
                      "type": "integer"
                    },
                    "degraded": {
                      "type": "integer"
                    },
                    "down": {
                      "type": "integer"
                    },
                    "not_configured": {
                      "type": "integer"
                    },
                    "sunset": {
                      "type": "integer"
                    },
                    "lastChecked": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "isStale": {
                      "type": "boolean"
                    },
                    "connectors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "slug": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "ok",
                              "degraded",
                              "down",
                              "not_configured",
                              "sunset"
                            ]
                          },
                          "responseMs": {
                            "type": "integer"
                          },
                          "errorMessage": {
                            "type": "string"
                          },
                          "configured": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/connectors": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMetaConnectors",
        "summary": "Capability-matrise for alle connectors",
        "description": "Kompakt matrise — én rad per kilde med status, endpoints,\nMCP-tellinger og kategori. Brukt av agenter til planlegging uten å\nlaste hele OpenAPI-spec-en.\n",
        "security": [],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "connected",
                "planned",
                "scraping",
                "deprecated"
              ]
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "SE",
                "DK",
                "FI",
                "IS",
                "EU"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hasMcp",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          },
          {
            "name": "available",
            "in": "query",
            "required": false,
            "description": "Filtrer på `routeAvailable` (#3390).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Connector-matrise.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "total": {
                      "type": "integer"
                    },
                    "connectors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig filter-parameter.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/_meta/connectors/{slug}": {
      "parameters": [
        {
          "name": "slug",
          "in": "path",
          "required": true,
          "description": "Connector-slug (kebab-case), f.eks. `brreg`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMetaConnectorBySlug",
        "summary": "Capability-detail for én connector",
        "description": "Samme format som listen, for én slug.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "Connector-detail.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "Ukjent connector-slug.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{orgnr}/financials": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "getCompanyFinancials",
        "summary": "Regnskapsnøkkeltall og LEI for ett selskap",
        "description": "Henter et årsregnskap (Brreg Regnskapsregisteret, `SELSKAP`-regnskap\nforetrekkes) og GLEIF LEI-status parallelt. Uten `year` returneres siste\ntilgjengelige år; `year` velger et spesifikt regnskapsår.\n\nPartiell suksess returneres som 200 med `null`-felt for kilden som\nmanglet; 404 når verken regnskap eller LEI finnes, eller når et\netterspurt `year` ikke er tilgjengelig (`availableYears[]` i responsen\nforteller hvilke år som finnes). Ukjente query-params og ugyldige\n`year`-verdier avvises med 400 (fail-loud, #3605). **Cache:** 1 time.\n",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fire-sifret regnskapsår (1900–2100). Utelat for siste tilgjengelige\når. Et utilgjengelig år gir 404 med `availableYears[]`.\n",
            "schema": {
              "type": "integer",
              "minimum": 1900,
              "maximum": 2100,
              "example": 2023
            }
          }
        ],
        "security": [
          {
            "bearerAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Minst én kilde svarte (regnskap og/eller LEI).",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "public, max-age=3600, s-maxage=3600"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "orgnr",
                    "financials",
                    "availableYears",
                    "lei",
                    "leiStatus",
                    "leiSource"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "example": "923609016"
                    },
                    "availableYears": {
                      "type": "array",
                      "description": "Alle regnskapsår tilgjengelig fra Brreg, nyeste først.",
                      "items": {
                        "type": "integer"
                      },
                      "example": [
                        2024,
                        2023,
                        2022
                      ]
                    },
                    "financials": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "description": "Sammendrag av valgt årsregnskap, eller null.",
                      "properties": {
                        "year": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "example": 2024
                        },
                        "currency": {
                          "type": "string",
                          "description": "Faktisk innleveringsvaluta fra regnskapet (ISO 4217). USD-rapporterende selskaper (Equinor, Aker BP) leverer i USD; falbacker til NOK kun når kilden ikke oppgir valuta.",
                          "example": "NOK"
                        },
                        "revenue": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Driftsinntekter"
                        },
                        "netIncome": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Årsresultat"
                        },
                        "equity": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Sum egenkapital"
                        },
                        "totalAssets": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Sum eiendeler"
                        },
                        "equityRatioPct": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Egenkapitalandel i prosent"
                        },
                        "debtRatio": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Gjeldsandel = gjeld / eiendeler (debt-to-assets), ≤1 for solvente selskaper."
                        },
                        "debtToEquityRatio": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Gjeldsgrad = gjeld / egenkapital (debt-to-equity)."
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "brreg-regnskap"
                          ]
                        }
                      }
                    },
                    "lei": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "LEI-kode (GLEIF)"
                    },
                    "leiStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "ACTIVE"
                    },
                    "leiSource": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "gleif",
                        null
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig organisasjonsnummer (må være 9 siffer), ukjent query-param,\neller ugyldig `year`-verdi.\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Ingen regnskap eller LEI funnet for orgnr, eller etterspurt `year`\ner ikke tilgjengelig (se `availableYears[]` i problem-body).\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/{orgnr}/compliance": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "getCompanyCompliance",
        "summary": "KYB compliance-rapport for ett selskap",
        "description": "Fan-out til Brreg (navn + styreroller + konkurs) og OpenSanctions\n(navnescreening) parallelt. Full PEP-database finnes ikke —\nstyremedlemmer flagges med `requires_review` for manuell sjekk.\n\n**Cache:** ingen (private, max-age=0) — compliance-svar skal være ferske.\n",
        "security": [
          {
            "bearerAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Compliance-rapport (partiell suksess mulig — se `sources`).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "orgnr",
                    "navn",
                    "timestamp",
                    "sanctions",
                    "pep",
                    "bankruptcy",
                    "sources"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "example": "923609016"
                    },
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "EQUINOR ASA"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "clean",
                            "hit",
                            "error"
                          ]
                        },
                        "hits": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "navn": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "regimer": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "opensanctions"
                          ]
                        },
                        "checkedAt": {
                          "type": "string",
                          "format": "date-time"
                        }
                      }
                    },
                    "pep": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "not_checked",
                            "clean",
                            "requires_review"
                          ]
                        },
                        "boardMembers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "note": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "brreg-roller"
                          ]
                        }
                      }
                    },
                    "bankruptcy": {
                      "type": "object",
                      "properties": {
                        "currentStatus": {
                          "type": "string",
                          "enum": [
                            "active",
                            "bankrupt",
                            "dissolved",
                            "unknown"
                          ]
                        },
                        "historicBankruptcies": {
                          "type": "integer"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "brreg-konkurs"
                          ]
                        }
                      }
                    },
                    "sources": {
                      "type": "array",
                      "description": "Datakilder som faktisk ble kontaktet.",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig organisasjonsnummer (må være 9 siffer).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/companies/search": {
      "get": {
        "tags": [
          "companies"
        ],
        "operationId": "searchCompaniesAlias",
        "summary": "Selskapssøk-alias (speiler /api/v1/companies?q=)",
        "description": "Fritekst-navnesøk på tvers av nordiske selskapsregistre (#2890, #3904).\nStatisk alias så «search» aldri tolkes som ugyldig orgnr av `{orgnr}`-ruta.\n\nStøttede land for navnesøk: **NO** (Brønnøysund), **DK** (CVR/Virk),\n**FI** (YTJ/PRH). **SE** har foreløpig ikke fritekst-navnesøk hos upstream\n(SCB Företagsregistret søker på bransje/län, Bolagsverket kun på org.nr) —\nbruk ID-oppslag via `/api/v1/company/{orgnr}` for svenske selskap.\n\nHvert treff har et kilde-agnostisk `companyId` + `idType`\n(`NO_ORGNR` | `DK_CVR` | `FI_YTUNNUS`). NO-treff beholder også `orgnr` for\nbakåtkompatibilitet. DK paginerer ikke (én side per søk).\n",
        "security": [
          {
            "bearerAuth": []
          },
          {}
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Søketekst (selskapsnavn).",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "description": "Landkode for navnesøk. SE støttes ikke (kun ID-oppslag).",
            "schema": {
              "type": "string",
              "default": "NO",
              "enum": [
                "NO",
                "DK",
                "FI"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall treff (klemmes til [1, 50]). Aliaset `pageSize` godtas også slik at responsfeltet `pageSize` kan round-trippes (#4168); `limit` har presedens om begge er satt.\n",
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Alias for `limit` — samme navn som responsfeltet (#4168).\n",
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "total",
                    "page",
                    "pageSize",
                    "country",
                    "companies"
                  ],
                  "properties": {
                    "total": {
                      "type": "integer"
                    },
                    "page": {
                      "type": "integer"
                    },
                    "pageSize": {
                      "type": "integer"
                    },
                    "country": {
                      "type": "string"
                    },
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "companyId",
                          "idType",
                          "name",
                          "country",
                          "status",
                          "orgForm"
                        ],
                        "properties": {
                          "companyId": {
                            "type": "string",
                            "description": "Nasjonal selskaps-ID (NO orgnr, DK CVR, FI Y-tunnus).",
                            "example": "923609016"
                          },
                          "idType": {
                            "type": "string",
                            "enum": [
                              "NO_ORGNR",
                              "DK_CVR",
                              "FI_YTUNNUS"
                            ],
                            "description": "Hvilken ID-type companyId er — for videre-oppslag."
                          },
                          "orgnr": {
                            "type": "string",
                            "description": "Bakåtkomp-alias (= companyId) satt KUN for NO-treff.",
                            "example": "923609016"
                          },
                          "name": {
                            "type": "string",
                            "example": "EQUINOR ASA"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "NO",
                              "DK",
                              "FI"
                            ],
                            "example": "NO"
                          },
                          "status": {
                            "type": "string",
                            "example": "aktiv"
                          },
                          "orgForm": {
                            "type": "string",
                            "example": "ASA"
                          }
                        }
                      }
                    },
                    "canonicalUrl": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Manglende/ugyldig parameter (missing-query, invalid-limit, invalid-page, country-not-supported).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream-feil mot et selskapsregister (NO/DK/FI).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Kilde ikke konfigurert / kvote brukt opp (f.eks. DK CVR uten API-nøkkel).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getV1Health",
        "summary": "Helse-alias (speiler /api/v1/_meta/health)",
        "description": "Alias for `/api/v1/_meta/health` — samme respons-shape med status,\nversjon og upstream-diagnostikk.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "Helsetilstand.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Health",
                  "required": [
                    "status",
                    "version",
                    "timestamp"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok",
                        "degraded",
                        "down"
                      ]
                    },
                    "version": {
                      "type": "string",
                      "description": "Build-SHA + tidstempel (`<sha>-<iso>`).",
                      "example": "c36f542-2026-05-04T12:00:00Z"
                    },
                    "timestamp": {
                      "type": "string",
                      "minLength": 20,
                      "description": "ISO-8601 server-tid."
                    },
                    "upstream": {
                      "type": "object",
                      "description": "Status for hver upstream-avhengighet. `database` rapporterer Cloud\nSQL-tilstand (#3304): \"unknown\" til PG_CONNECTION_STRING er bundet\n(#3302/#3303), deretter \"ok\"/\"down\" fra `dbHealth()`. Detaljer\n(latency, feilmelding) ligger under `diagnostics.database`.\n",
                      "additionalProperties": {
                        "type": "string",
                        "enum": [
                          "ok",
                          "degraded",
                          "down",
                          "unknown"
                        ]
                      },
                      "example": {
                        "service": "ok",
                        "database": "ok",
                        "firestore": "ok",
                        "stripe": "ok"
                      }
                    },
                    "diagnostics": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "description": "ketl-spesifikke diagnostiske felt (utenfor offentlig RFC-kontrakt).\nBrukes av admin-UI og uptime-bots for å se proxy-tilstand. Kan\ninneholde proxyBaseUrl, proxyKnownDead, proxyKnownDeadIssue (#414).\n",
                      "additionalProperties": true,
                      "example": {
                        "proxyBaseUrl": "https://data.ketl.no",
                        "proxyBaseUrlSource": "prod-default",
                        "proxyKnownDead": false,
                        "proxyKnownDeadIssue": null
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sources": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getV1Sources",
        "summary": "Kildekatalog-alias (speiler /api/v1/_meta/sources)",
        "description": "Alias for `/api/v1/_meta/sources` — samme filtre og respons-shape.\n",
        "security": [],
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "SE",
                "DK",
                "FI",
                "IS",
                "EU"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "connected",
                "planned",
                "scraping",
                "deprecated"
              ]
            }
          },
          {
            "name": "segment",
            "in": "query",
            "required": false,
            "description": "Kebab-case segment-filter.",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,40}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Kildekatalog.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "items",
                    "total"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "title": "Source",
                        "required": [
                          "key",
                          "name",
                          "status",
                          "country"
                        ],
                        "properties": {
                          "key": {
                            "type": "string",
                            "title": "SourceKey",
                            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
                            "enum": [
                              "brreg",
                              "ssb",
                              "norges-bank",
                              "enhetsregister",
                              "proff",
                              "bygg-anlegg",
                              "eksportor",
                              "kartverket",
                              "sodir",
                              "ais",
                              "artskart",
                              "avinor",
                              "barentswatch",
                              "elhub",
                              "fhi",
                              "finanstilsynet",
                              "finansinspektionen-se",
                              "finanstilsynet-dk",
                              "fisheries",
                              "fri-nettleie",
                              "frost",
                              "geonorge",
                              "hoyesterett",
                              "konkurs",
                              "kommunedatabasen",
                              "kostra",
                              "lakselus",
                              "lovtidend",
                              "luftkvalitet",
                              "lysingsblad",
                              "mattilsynet-smilefjes",
                              "met",
                              "nav",
                              "nb-dhlab",
                              "norske-utslipp",
                              "nve",
                              "nvdb",
                              "oslobors",
                              "patentstyret",
                              "politiloggen",
                              "regjeringen",
                              "rss-news",
                              "sdir",
                              "stortinget",
                              "stromprise",
                              "udir",
                              "connectors",
                              "data-quality",
                              "audit",
                              "companies",
                              "persons",
                              "kg",
                              "sync",
                              "config",
                              "sync-state",
                              "storage",
                              "discovery",
                              "lineage",
                              "backup",
                              "metrics",
                              "dashboard",
                              "brreg-endringer",
                              "nav-grunnbelop"
                            ]
                          },
                          "name": {
                            "type": "string",
                            "description": "Menneskelig navn på kilden.",
                            "example": "Brønnøysundregistrene Enhetsregisteret"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 500
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "connected",
                              "planned",
                              "scraping",
                              "deprecated"
                            ],
                            "description": "`connected`  = produserer ekte data via /api/data eller /api/v1\n`planned`    = listet i konfig, men ikke koblet til\n`scraping`   = ingen åpent API; data kommer fra scraper-flåten (#214)\n`deprecated` = under avvikling\n"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "NO",
                              "SE",
                              "DK",
                              "FI",
                              "IS",
                              "EU"
                            ],
                            "description": "Hvilket land/region kilden dekker."
                          },
                          "segments": {
                            "type": "array",
                            "description": "ICP-segmenter denne kilden er primært relevant for (#98).",
                            "items": {
                              "type": "string",
                              "enum": [
                                "revisor",
                                "konsulent",
                                "journalist",
                                "kommune",
                                "compliance",
                                "aktuar",
                                "eiendom",
                                "utvikler",
                                "academia",
                                "pe-vc",
                                "csrd",
                                "ai-act",
                                "eksportor",
                                "casp",
                                "bygg-anlegg"
                              ]
                            }
                          },
                          "docsUrl": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "uri",
                            "description": "Lenke til kildens egen API-dokumentasjon (data.brreg.no, ws.geonorge.no, ...)."
                          },
                          "mcpSlugs": {
                            "type": "array",
                            "description": "MCP-server-slug(er) (`/api/v1/_meta/mcp`) som betjener denne kilden (#3915).\nTom liste om kilden ikke har en publisert MCP-server. Relasjonen er 1:mange\n— én kilde kan betjenes av flere servere (f.eks. `brreg` av både `brreg` og\n`selskap`). Symmetrisk backlink til MCP-katalogens `servers[].sourceKey`\nslik at en agent kan krysse kilde → MCP deterministisk uten å gjette\nslug-mapping.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "brreg",
                              "selskap"
                            ]
                          }
                        },
                        "example": {
                          "key": "brreg",
                          "name": "Brønnøysundregistrene Enhetsregisteret",
                          "description": "Norsk selskapsregister med ~1M aktive juridiske enheter.",
                          "status": "connected",
                          "country": "NO",
                          "segments": [
                            "revisor",
                            "compliance",
                            "journalist"
                          ],
                          "docsUrl": "https://data.brreg.no/enhetsregisteret/api/dokumentasjon/no/index.html",
                          "mcpSlugs": [
                            "brreg",
                            "selskap"
                          ]
                        }
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig filter-parameter.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openapi.json": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getV1OpenApiJsonRedirect",
        "summary": "Redirect til /api/v1/_meta/openapi.json",
        "description": "307-redirect til kanonisk spec-URL (#2897).",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect til /api/v1/_meta/openapi.json.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string",
                  "example": "/api/v1/_meta/openapi.json"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openapi.yaml": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getV1OpenApiYamlRedirect",
        "summary": "Redirect til /api/v1/_meta/openapi.yaml",
        "description": "307-redirect til kanonisk spec-URL (#3359).",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect til /api/v1/_meta/openapi.yaml.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string",
                  "example": "/api/v1/_meta/openapi.yaml"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sanctions": {
      "get": {
        "tags": [
          "sanctions"
        ],
        "operationId": "discoverSanctions",
        "summary": "Discovery-index for sanctions-ressursen",
        "description": "Maskinlesbar liste over underressurser under `/api/v1/sanctions`\n(screening, kilder). Lar en agent klatre videre uten å gjette stier.\n",
        "responses": {
          "200": {
            "description": "Discovery-payload med underressurser og lenker.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource",
                    "description",
                    "paths",
                    "docs"
                  ],
                  "properties": {
                    "resource": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "paths": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "path",
                          "methods",
                          "description"
                        ],
                        "properties": {
                          "path": {
                            "type": "string"
                          },
                          "methods": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/research": {
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "discoverResearch",
        "summary": "Discovery-index for research-ressursen",
        "description": "Maskinlesbar liste over underressurser under `/api/v1/research`\n(selskaps-research, kø, statistikk).\n",
        "responses": {
          "200": {
            "description": "Discovery-payload med underressurser og lenker.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource",
                    "description",
                    "paths",
                    "docs"
                  ],
                  "properties": {
                    "resource": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "paths": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "path",
                          "methods",
                          "description"
                        ],
                        "properties": {
                          "path": {
                            "type": "string"
                          },
                          "methods": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/me": {
      "get": {
        "tags": [
          "account"
        ],
        "operationId": "discoverMe",
        "summary": "Discovery-index for me-ressursen",
        "description": "Maskinlesbar liste over underressurser under `/api/v1/me`\n(eget forbruk, API-nøkler).\n",
        "responses": {
          "200": {
            "description": "Discovery-payload med underressurser og lenker.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource",
                    "description",
                    "paths",
                    "docs"
                  ],
                  "properties": {
                    "resource": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "paths": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "path",
                          "methods",
                          "description"
                        ],
                        "properties": {
                          "path": {
                            "type": "string"
                          },
                          "methods": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/apps": {
      "get": {
        "tags": [
          "apps"
        ],
        "operationId": "discoverApps",
        "summary": "Discovery-index for apps-ressursen",
        "description": "Maskinlesbar liste over underressurser under `/api/v1/apps`\n(app-katalog, agent-kjørbar run-flate).\n",
        "responses": {
          "200": {
            "description": "Discovery-payload med underressurser og lenker.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource",
                    "description",
                    "paths",
                    "docs"
                  ],
                  "properties": {
                    "resource": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "paths": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "path",
                          "methods",
                          "description"
                        ],
                        "properties": {
                          "path": {
                            "type": "string"
                          },
                          "methods": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reviews": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "discoverReviews",
        "summary": "Discovery-index for reviews-ressursen",
        "description": "Maskinlesbar liste over underressurser under `/api/v1/reviews`\n(plattform-katalog, profil per kilde, søk, krysskilde-aggregat).\n",
        "responses": {
          "200": {
            "description": "Discovery-payload med underressurser og lenker.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "resource",
                    "description",
                    "paths",
                    "docs"
                  ],
                  "properties": {
                    "resource": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "paths": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "path",
                          "methods",
                          "description"
                        ],
                        "properties": {
                          "path": {
                            "type": "string"
                          },
                          "methods": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reviews/sources": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "v1ReviewsSources",
        "summary": "Plattform-katalog for review-flaten",
        "description": "Kanonisk katalog over review-/omtalekilder v1-flaten dekker: hvilken\nidentifikator hver kilde krever, om den støtter fritekstsøk, søke-hull\n(selvbeskrivende) og dokumenterte eksklusjoner. Speiler MCP\n`reviews_list_sources`. Bruk dette først for å finne riktig `source` og\nidentifikator-form.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "Kilde-katalog.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "sources",
                    "total"
                  ],
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 18
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "source": {
                            "type": "string",
                            "example": "trustpilot"
                          },
                          "label": {
                            "type": "string",
                            "example": "Trustpilot"
                          },
                          "market": {
                            "type": "string",
                            "enum": [
                              "NO",
                              "SE",
                              "DK",
                              "FI",
                              "INT"
                            ]
                          },
                          "searchable": {
                            "type": "boolean"
                          },
                          "identifier": {
                            "type": "object",
                            "properties": {
                              "param": {
                                "type": "string",
                                "example": "domain"
                              },
                              "kind": {
                                "type": "string",
                                "example": "domene"
                              },
                              "example": {
                                "type": "string",
                                "example": "dnb.no"
                              }
                            }
                          },
                          "endpoints": {
                            "type": "object",
                            "properties": {
                              "profile": {
                                "type": "string"
                              },
                              "search": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          }
                        }
                      }
                    },
                    "searchGaps": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "excluded": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "aggregate": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reviews/aggregate": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "v1ReviewsAggregate",
        "summary": "Krysskilde-aggregat for én bedrift",
        "description": "Vektet snittscore + total anmeldelser på tvers av alle kilder for én\nbedrift. Oppgi én av `orgnr`/`domain`/`name` (navn resolveres til orgnr via\nBrreg). Kilder kalles parallelt med per-kilde-timeout; degraderte/robots-/\nrate-limited-kilder rapporteres med `status:\"degraded\"` (ikke feil) slik at\nén treg kilde ikke velter hele profilen. Speiler MCP\n`reviews_aggregate_profile`.\n",
        "security": [],
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$",
              "example": "923609016"
            }
          },
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "dnb.no"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Telenor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Aggregert profil på tvers av kilder.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Ingen av `orgnr`/`domain`/`name` oppgitt, eller ugyldig orgnr.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Fant ingen bedrift for oppgitt navn.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reviews/{source}/profile": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "v1ReviewsProfile",
        "summary": "Omdømmeprofil for én bedrift fra én kilde",
        "description": "Normaliserte anmeldelser (CanonicalReview) + aggregert summary for én\nbedrift fra én review-kilde. Speiler MCP `reviews_get_profile`. Upstream-\nstatus propageres uendret — `451` betyr robots.txt-disallowed (ikke maskert\nsom 500), `429` rate-limit, `503` kill-switch av.\n",
        "security": [],
        "parameters": [
          {
            "name": "source",
            "in": "path",
            "required": true,
            "description": "Kilde-kode fra `/api/v1/reviews/sources`.",
            "schema": {
              "type": "string",
              "example": "trustpilot"
            }
          },
          {
            "name": "identifier",
            "in": "query",
            "required": true,
            "description": "Kilde-spesifikk identifikator (se `sources[].identifier`).",
            "schema": {
              "type": "string",
              "example": "dnb.no"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser (1–200).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profil med normaliserte anmeldelser og summary.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Manglende `identifier`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Ukjent kilde, eller ingen profil for identifikatoren.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "451": {
            "description": "Kilden tillater ikke skraping av ressursen (robots.txt)."
          },
          "503": {
            "description": "Scraperen er deaktivert (kill-switch)."
          }
        }
      }
    },
    "/api/v1/reviews/{source}/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "v1ReviewsSearch",
        "summary": "Fritekstsøk i én review-kilde",
        "description": "Søk på bedriftsnavn i én kilde → kandidat-profiler. Speiler MCP\n`reviews_search` (per kilde). Kilder uten fritekst-søk svarer en\nselvbeskrivende `search_unsupported`-kontrakt (uendret propagert) slik at\nalle kilder har samme discovery-inngang.\n",
        "security": [],
        "parameters": [
          {
            "name": "source",
            "in": "path",
            "required": true,
            "description": "Kilde-kode fra `/api/v1/reviews/sources`.",
            "schema": {
              "type": "string",
              "example": "gulesider"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Bedriftsnavn å søke etter.",
            "schema": {
              "type": "string",
              "example": "Telenor"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Søketreff (eller `search_unsupported`-kontrakt).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Manglende `q`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Ukjent kilde.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sanctions/screening": {
      "get": {
        "tags": [
          "sanctions"
        ],
        "operationId": "sanctionsScreening",
        "summary": "Sanksjonsscreening av navn",
        "description": "Screener ett navn mot EU-sanksjonslistene via OpenSanctions. Grunnlaget\nflettes fra `eu_sanctions_map` (organisasjoner/fartøy) og `eu_fsf`\n(personer) — se #3457. Responsen bærer `coverage` per entitetstype og\n`warnings` ved delvis grunnlag, slik at et tomt resultat aldri kan\nforveksles med manglende dekning. Bruk POST for flere entiteter i\nett kall.\n",
        "security": [],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "description": "Navn som skal screenes (`q` aksepteres som alias).",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "person",
                "company",
                "organisation",
                "organization",
                "vessel"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Screening-resultat.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "results",
                    "dataset",
                    "checkedAt"
                  ],
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "entity": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "countries": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "matched": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "description": "`null` betyr at screeningen IKKE ble gjennomført (upstream-feil)\n— aldri tolk det som «ingen treff» (#3457).\n"
                          },
                          "hitCount": {
                            "type": "integer"
                          },
                          "warning": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Eksplisitt varsel når et tomt resultat ikke kan tolkes som\nklarering (manglende dekning for entitetstypen, #3457).\n"
                          },
                          "error": {
                            "description": "Upstream-feilkropp når screeningen feilet (kun POST)."
                          },
                          "hits": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "type": {
                                  "type": "string"
                                },
                                "aliases": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "regimes": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "nationality": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "imoNumber": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "note": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "dataset": {
                      "type": "string",
                      "example": "eu_sanctions_map+eu_fsf"
                    },
                    "datasets": {
                      "type": "array",
                      "description": "OpenSanctions-datasett flettet inn i screening-grunnlaget.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "eu_sanctions_map",
                        "eu_fsf"
                      ]
                    },
                    "coverage": {
                      "type": "object",
                      "description": "Dekning per entitetstype i screening-grunnlaget (#3457).",
                      "properties": {
                        "persons": {
                          "type": "boolean"
                        },
                        "organizations": {
                          "type": "boolean"
                        },
                        "vessels": {
                          "type": "boolean"
                        }
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "description": "Varsler ved delvis screening-grunnlag (#3457).",
                      "items": {
                        "type": "string"
                      }
                    },
                    "checkedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Manglende name/q eller ugyldig type.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream-feil mot OpenSanctions.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Screening-grunnlaget lastes eller kilden er ikke konfigurert.\nFeil propageres som feilstatus — aldri som stille `matched: false`\n(#3457).\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "sanctions"
        ],
        "operationId": "sanctionsScreeningBatchPost",
        "summary": "Batch-screening av inntil 50 entiteter",
        "description": "Screener 1–50 entiteter i ett kall. `/api/v1/sanctions/screening/batch`\ner identisk alias for samme operasjon.\n",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "entities"
                ],
                "properties": {
                  "entities": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "company",
                            "organisation",
                            "organization",
                            "vessel"
                          ]
                        },
                        "countries": {
                          "type": "array",
                          "maxItems": 10,
                          "items": {
                            "type": "string",
                            "minLength": 2,
                            "maxLength": 2
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Screening-resultater per entitet.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "results",
                    "dataset",
                    "checkedAt"
                  ],
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "entity": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "countries": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "matched": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "description": "`null` betyr at screeningen IKKE ble gjennomført (upstream-feil)\n— aldri tolk det som «ingen treff» (#3457).\n"
                          },
                          "hitCount": {
                            "type": "integer"
                          },
                          "warning": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Eksplisitt varsel når et tomt resultat ikke kan tolkes som\nklarering (manglende dekning for entitetstypen, #3457).\n"
                          },
                          "error": {
                            "description": "Upstream-feilkropp når screeningen feilet (kun POST)."
                          },
                          "hits": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "type": {
                                  "type": "string"
                                },
                                "aliases": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "regimes": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "nationality": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "imoNumber": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "note": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "dataset": {
                      "type": "string",
                      "example": "eu_sanctions_map+eu_fsf"
                    },
                    "datasets": {
                      "type": "array",
                      "description": "OpenSanctions-datasett flettet inn i screening-grunnlaget.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "eu_sanctions_map",
                        "eu_fsf"
                      ]
                    },
                    "coverage": {
                      "type": "object",
                      "description": "Dekning per entitetstype i screening-grunnlaget (#3457).",
                      "properties": {
                        "persons": {
                          "type": "boolean"
                        },
                        "organizations": {
                          "type": "boolean"
                        },
                        "vessels": {
                          "type": "boolean"
                        }
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "description": "Varsler ved delvis screening-grunnlag (#3457).",
                      "items": {
                        "type": "string"
                      }
                    },
                    "checkedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig JSON eller validering feilet.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream-feil mot OpenSanctions.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sanctions/screening/batch": {
      "post": {
        "tags": [
          "sanctions"
        ],
        "operationId": "sanctionsScreeningBatch",
        "summary": "Batch-screening (alias for POST /api/v1/sanctions/screening)",
        "description": "Identisk med `POST /api/v1/sanctions/screening` (#2945).",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "entities"
                ],
                "properties": {
                  "entities": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "company",
                            "organisation",
                            "organization",
                            "vessel"
                          ]
                        },
                        "countries": {
                          "type": "array",
                          "maxItems": 10,
                          "items": {
                            "type": "string",
                            "minLength": 2,
                            "maxLength": 2
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Screening-resultater per entitet.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "results",
                    "dataset",
                    "checkedAt"
                  ],
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "entity": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "countries": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "matched": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "description": "`null` betyr at screeningen IKKE ble gjennomført (upstream-feil)\n— aldri tolk det som «ingen treff» (#3457).\n"
                          },
                          "hitCount": {
                            "type": "integer"
                          },
                          "warning": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Eksplisitt varsel når et tomt resultat ikke kan tolkes som\nklarering (manglende dekning for entitetstypen, #3457).\n"
                          },
                          "error": {
                            "description": "Upstream-feilkropp når screeningen feilet (kun POST)."
                          },
                          "hits": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "type": {
                                  "type": "string"
                                },
                                "aliases": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "regimes": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "nationality": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "imoNumber": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "note": {
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "dataset": {
                      "type": "string",
                      "example": "eu_sanctions_map+eu_fsf"
                    },
                    "datasets": {
                      "type": "array",
                      "description": "OpenSanctions-datasett flettet inn i screening-grunnlaget.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "eu_sanctions_map",
                        "eu_fsf"
                      ]
                    },
                    "coverage": {
                      "type": "object",
                      "description": "Dekning per entitetstype i screening-grunnlaget (#3457).",
                      "properties": {
                        "persons": {
                          "type": "boolean"
                        },
                        "organizations": {
                          "type": "boolean"
                        },
                        "vessels": {
                          "type": "boolean"
                        }
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "description": "Varsler ved delvis screening-grunnlag (#3457).",
                      "items": {
                        "type": "string"
                      }
                    },
                    "checkedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig JSON eller validering feilet.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "405": {
            "description": "GET er ikke tillatt — bruk POST."
          },
          "502": {
            "description": "Upstream-feil mot OpenSanctions.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sanctions/sources": {
      "get": {
        "tags": [
          "sanctions"
        ],
        "operationId": "sanctionsSources",
        "summary": "Tilgjengelige sanksjonslister",
        "description": "Katalog over sanksjonslister ketl screener mot (#2817).",
        "security": [],
        "responses": {
          "200": {
            "description": "Liste-katalog.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "sources"
                  ],
                  "properties": {
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "provider": {
                            "type": "string"
                          },
                          "upstreamUrl": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "coverage": {
                            "type": "object",
                            "description": "Dekning per entitetstype (#3457).",
                            "properties": {
                              "persons": {
                                "type": "boolean"
                              },
                              "organizations": {
                                "type": "boolean"
                              },
                              "vessels": {
                                "type": "boolean"
                              }
                            }
                          },
                          "updateFrequency": {
                            "type": "string"
                          },
                          "licence": {
                            "type": "string"
                          },
                          "licenceNote": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/research/{orgnr}": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "getResearchByOrgnrAlias",
        "summary": "Research-grunnlag (alias for /research/companies/{orgnr})",
        "description": "Alias for `/api/v1/research/companies/{orgnr}`.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Research-grunnlag (Brreg + roller + warnings).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "orgnr",
                    "brreg",
                    "warnings"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string"
                    },
                    "brreg": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Brreg-enhetsdata."
                    },
                    "roller": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/research/companies/{orgnr}": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "getResearchCompany",
        "summary": "Research-grunnlag for ett selskap",
        "description": "Henter grunnlagsdata (Brreg-enhet + roller) som en research-agent\ntrenger for å skrive en selskapsrapport. Krever scope\n`research:read` eller `research:write`.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Research-grunnlag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "orgnr",
                    "brreg",
                    "warnings"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string"
                    },
                    "brreg": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Brreg-enhetsdata."
                    },
                    "roller": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/research/companies/{orgnr}/research": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "getCompanyResearchRecord",
        "summary": "Publisert research-rapport for ett selskap",
        "description": "Siste publiserte research-rapport (markdown, redaktert). Krever scope\n`research:read`. **Cache:** 5 min.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Research-rapport.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Research-record med rendret markdownBody."
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      },
      "post": {
        "tags": [
          "research"
        ],
        "operationId": "submitCompanyResearch",
        "summary": "Send inn research-rapport",
        "description": "Publiserer (eller idempotent re-publiserer) en research-rapport for\nselskapet. Krever scope `research:write`.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true,
                "description": "Research-submission (markdown + metadata)."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent retur — identisk innhold finnes allerede."
          },
          "201": {
            "description": "Rapport publisert (contentHash, shouldFlagForReview, warnings)."
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/research/companies/{orgnr}/research/v/{version}": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        },
        {
          "name": "version",
          "in": "path",
          "required": true,
          "description": "Versjonsnummer (positivt heltall).",
          "schema": {
            "type": "integer",
            "minimum": 1
          }
        }
      ],
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "getCompanyResearchVersion",
        "summary": "Spesifikk versjon av research-rapport",
        "description": "Henter en historisk versjon av rapporten. Krever scope\n`research:read`. **Cache:** 1 time.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Research-rapport (gitt versjon).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/research/queue/next": {
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "claimResearchQueueNext",
        "summary": "Claim neste selskap(er) fra research-køen",
        "description": "Claimer inntil `count` selskaper fra køen for research-agenten som\nkaller. Krever scope `research:queue`.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1,
              "maximum": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Claimede orgnr.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "claimed",
                    "count",
                    "agent"
                  ],
                  "properties": {
                    "claimed": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "count": {
                      "type": "integer"
                    },
                    "agent": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/research/queue/{orgnr}/status": {
      "parameters": [
        {
          "name": "orgnr",
          "in": "path",
          "required": true,
          "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
          "schema": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          }
        }
      ],
      "post": {
        "tags": [
          "research"
        ],
        "operationId": "setResearchQueueStatus",
        "summary": "Oppdater kø-status for ett selskap",
        "description": "Rapporter tilbake utfall for et claimet selskap. Krever scope\n`research:queue` og `research:write`.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "status"
                ],
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "failed",
                      "review_needed",
                      "pending"
                    ]
                  },
                  "errorCode": {
                    "type": "string"
                  },
                  "errorMessage": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Status oppdatert.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orgnr": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/research/stats": {
      "get": {
        "tags": [
          "research"
        ],
        "operationId": "getResearchStats",
        "summary": "Aggregert research-statistikk",
        "description": "Kø- og publiseringsstatistikk. Krever scope `research:read` eller\n`research:queue`.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Aggregert statistikk.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/me/audit-log": {
      "get": {
        "tags": [
          "account"
        ],
        "operationId": "getMyAuditLog",
        "summary": "Audit-logg for egen konto",
        "description": "Returnerer audit-hendelser for den autentiserte kontoen (#75 audit\ntrail by default). Krever Bearer-token.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Audit-hendelser.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Audit-logg-elementer for kontoen."
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/me/export": {
      "get": {
        "tags": [
          "account"
        ],
        "operationId": "getMyExport",
        "summary": "Dataeksport for egen konto (GDPR art. 20)",
        "description": "Maskinlesbar eksport av kontoens data (dataportabilitet). I prod\nkrever ruten Bearer-token; Next-laget serverer struktur-template.\n",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Eksport-struktur med kontoens collections.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/me/usage": {
      "get": {
        "tags": [
          "account"
        ],
        "operationId": "getMyUsage",
        "summary": "Eget API-forbruk mot tier-grensen",
        "description": "Returnerer eget forbruk i inneværende kvote-periode mot tier-grensen —\nsamme data som MCP-verktøyet `ketl.usage.get` og /dashboard/bruksstatistikk.\nBruk ved 429 for å se om kvoten er brukt opp. Krever Bearer (API-nøkkel\neller Firebase ID-token).\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` (warehouse-first) — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Forbruks-sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "example": true
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "tier": {
                          "type": "string",
                          "example": "free"
                        },
                        "period": {
                          "type": "string",
                          "example": "2026-06-15"
                        },
                        "used": {
                          "type": "integer",
                          "example": 412
                        },
                        "limit": {
                          "type": "integer",
                          "example": 500
                        },
                        "remaining": {
                          "type": "integer",
                          "example": 88
                        },
                        "metered": {
                          "type": "integer",
                          "example": 0
                        },
                        "resetAt": {
                          "type": "string",
                          "format": "date-time"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/me/keys": {
      "get": {
        "tags": [
          "account"
        ],
        "operationId": "listMyKeys",
        "summary": "Egne API-nøkler (metadata uten secrets)",
        "description": "Lister egne API-nøkler som metadata (id, navn, prefix, scopes, opprettet,\nsist brukt, utløp, revoked) — aldri selve nøkkelen. Speiler MCP-verktøyet\n`ketl.keys.list`. Bruk for å finne `keyId` før rotate/revoke. Krever Bearer.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` (warehouse-first) — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Liste over nøkkel-metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "example": true
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "prefix": {
                            "type": "string"
                          },
                          "createdAt": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true
                          },
                          "lastUsedAt": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true
                          },
                          "expiresAt": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true
                          },
                          "scopes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "revoked": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/me/keys/{keyId}/rotate": {
      "post": {
        "tags": [
          "account"
        ],
        "operationId": "rotateMyKey",
        "summary": "Rotér egen API-nøkkel (30 dagers grace)",
        "description": "Roterer en av dine API-nøkler: ny nøkkel utstedes (vises ÉN gang i svaret),\nden gamle lever i 30 dagers grace-vindu. Audit-logges (#75). Speiler\nMCP-verktøyet `ketl.keys.rotate`. Krever Bearer.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` (warehouse-first) — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID-en til nøkkelen som skal roteres (fra GET /api/v1/me/keys)."
          }
        ],
        "responses": {
          "201": {
            "description": "Ny nøkkel utstedt; gammel i grace-vindu.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "example": true
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "key": {
                          "type": "string",
                          "description": "Rånøkkel — vises kun her."
                        },
                        "newKeyId": {
                          "type": "string"
                        },
                        "prefix": {
                          "type": "string"
                        },
                        "scopes": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "newExpiresAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "oldKeyId": {
                          "type": "string"
                        },
                        "oldExpiresAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "note": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/v1/me/keys/{keyId}/revoke": {
      "post": {
        "tags": [
          "account"
        ],
        "operationId": "revokeMyKey",
        "summary": "Tilbakekall egen API-nøkkel",
        "description": "Tilbakekaller en av dine API-nøkler permanent og umiddelbart (ingen\ngrace-vindu — bruk rotate hvis tjenester fortsatt bruker nøkkelen).\nAudit-logges (#75). Speiler MCP-verktøyet `ketl.keys.revoke`. Krever Bearer.\n",
        "x-implementation": "cloud-functions",
        "x-dev-note": "Returnerer 501 i `next dev` (warehouse-first) — krever Firebase-emulator eller prod.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID-en til nøkkelen som skal tilbakekalles (fra GET /api/v1/me/keys)."
          }
        ],
        "responses": {
          "200": {
            "description": "Nøkkel tilbakekalt.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "example": true
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "revoked": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "403": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "404": {
            "description": "Standardisert feil per RFC 9457.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "501": {
            "description": "Next.js-stub i dev — servert av Cloud Functions i prod."
          }
        }
      }
    },
    "/api/status/feed.xml": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getStatusFeed",
        "summary": "Driftsstatus som RSS-feed",
        "description": "RSS 2.0-feed over hendelser/incidents. Abonnérbar i feed-lesere og\nSlack. Reell data fra Firestore i prod; minimal stub i `next dev`.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "RSS 2.0-dokument.",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/status/incidents": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getStatusIncidents",
        "summary": "Hendelseslogg (incidents)",
        "description": "Strukturert liste over registrerte driftshendelser. Reell data fra\nFirestore i prod; stub med `_note` i `next dev`.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "Hendelser.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "items"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "_note": {
                      "type": "string",
                      "description": "Kun i dev-stub."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/status/uptime": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getStatusUptime",
        "summary": "Oppetid per komponent (90 dager)",
        "description": "Historisk oppetid per komponent. Reell data fra Firestore i prod;\nstub med `_note` i `next dev`.\n",
        "security": [],
        "responses": {
          "200": {
            "description": "Oppetidsdata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "components",
                    "days"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "components": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "days": {
                      "type": "integer",
                      "example": 90
                    },
                    "_note": {
                      "type": "string",
                      "description": "Kun i dev-stub."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/mcp/tools": {
      "get": {
        "tags": [
          "meta"
        ],
        "operationId": "getMcpTools",
        "summary": "Komplett MCP-verktøykatalog (agent-onboarding)",
        "description": "Hele verktøykatalogen (550+ verktøy på tvers av alle MCP-servere) i ett\nkall, med `inputSchema` per verktøy. Gull for agent-onboarding: én\nrequest gir alt en agent trenger for å planlegge verktøybruk.\n\nKomplementerer `/api/v1/_meta/mcp` (server-katalog med tilkoblingsinfo).\nStøtter `If-None-Match`/ETag.\n",
        "security": [],
        "parameters": [
          {
            "name": "connector",
            "in": "query",
            "required": false,
            "description": "Filtrer på connector-slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "geography",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "SE",
                "DK",
                "EU"
              ]
            }
          },
          {
            "name": "dataType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "license",
            "in": "query",
            "required": false,
            "description": "F.eks. NLOD eller CC-BY-4.0.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateFrequency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "deprecated",
                "not_configured"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Verktøykatalog.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "public, max-age=300, s-maxage=600, stale-while-revalidate=86400"
                }
              },
              "X-Total-Tools": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "schemaVersion",
                    "totalTools",
                    "tools"
                  ],
                  "properties": {
                    "schemaVersion": {
                      "type": "string"
                    },
                    "mcpServer": {
                      "type": "string"
                    },
                    "generatedAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "totalTools": {
                      "type": "integer"
                    },
                    "byConnector": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    },
                    "byStatus": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    },
                    "tools": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "connector": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "inputSchema": {
                            "type": "object",
                            "additionalProperties": true
                          },
                          "coverage": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "304": {
            "description": "Ikke endret (If-None-Match traff ETag)."
          }
        }
      }
    },
    "/api/reviews/tripadvisor": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsTripadvisor",
        "summary": "Tripadvisor-anmeldelser for hotell/restaurant/attraksjon",
        "description": "Profil-oppslag på kjent Tripadvisor-side-slug via schema.org JSON-LD\n(#3469). Søk er bevisst ikke implementert — Tripadvisor sin robots.txt\nnekter søke-flatene.\n",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Side-slug uten ledende `/` og `.html`, f.eks.\n`Hotel_Review-g190511-d232538-Reviews-Britannia_Hotel-Trondheim`.\n",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profil med sammendrag og anmeldelser.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, slug, businessName, averageRating, totalReviews, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "tripadvisor"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen (403 bot-vegg fra sky-IP-er,",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/trustpilot": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsTrustpilot",
        "summary": "Trustpilot-anmeldelser for ett domene",
        "security": [],
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Forretningsdomene, f.eks. `example.no`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 253
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, businessDomain, businessName, trustScore, stars, totalReviews, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "trustpilot"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/gulesider": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsGulesider",
        "summary": "Gulesider-anmeldelser for ett orgnr",
        "security": [],
        "parameters": [
          {
            "name": "orgNr",
            "in": "query",
            "required": true,
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, orgNr, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "gulesider"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/finn": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsFinn",
        "summary": "FINN-brukeranmeldelser (Torget-selger)",
        "security": [],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "required": true,
            "description": "FINN-bruker-ID (alfanumerisk/bindestrek).",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, userId, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "finn"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/legelisten": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsLegelisten",
        "summary": "Legelisten-anmeldelser for én behandler",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Legelisten-slug for behandleren.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, slug, providerName, specialty, address, hprNumber, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "legelisten"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/bytt": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsBytt",
        "summary": "Bytt.no-anmeldelser for én leverandør",
        "security": [],
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": true,
            "description": "Kategori (lowercase), se /api/reviews/bytt/categories.",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 30
            }
          },
          {
            "name": "company",
            "in": "query",
            "required": true,
            "description": "Leverandør-slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, category, company, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "bytt"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/1881": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsN1881",
        "summary": "1881-anmeldelser for ett orgnr",
        "security": [],
        "parameters": [
          {
            "name": "orgNr",
            "in": "query",
            "required": true,
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, orgNr, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "1881"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/allabolag": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsAllabolag",
        "summary": "Allabolag-anmeldelser for ett svensk orgnummer",
        "security": [],
        "parameters": [
          {
            "name": "orgNumber",
            "in": "query",
            "required": true,
            "description": "Svensk organisationsnummer (10 siffer uten bindestrek).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{10}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, orgNumber, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "allabolag"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/app-store": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsAppStore",
        "summary": "App Store-anmeldelser for én app",
        "security": [],
        "parameters": [
          {
            "name": "appId",
            "in": "query",
            "required": true,
            "description": "Apple App Store app-ID (numerisk).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{3,15}$"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "description": "ISO-landkode for storefront.",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "default": "no"
            }
          },
          {
            "name": "pages",
            "in": "query",
            "required": false,
            "description": "Antall RSS-sider som hentes.",
            "schema": {
              "type": "integer",
              "default": 3,
              "maximum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, appId, country, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "app-store"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/capterra": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsCapterra",
        "summary": "Capterra-anmeldelser for ett produkt",
        "security": [],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "required": true,
            "description": "Capterra produkt-ID (numerisk).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{1,15}$"
            }
          },
          {
            "name": "slug",
            "in": "query",
            "required": false,
            "description": "Produkt-slug (valgfri presisering).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, productId, productName, totalReviews, averageRating, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "capterra"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/elkjop": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsElkjop",
        "summary": "Elkjøp produktanmeldelser",
        "security": [],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "required": true,
            "description": "Produkt-ID (alfanumerisk/bindestrek).",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, productId, productName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "elkjop"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/hitta": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsHitta",
        "summary": "Hitta.se-anmeldelser for ett svensk orgnummer",
        "security": [],
        "parameters": [
          {
            "name": "orgNumber",
            "in": "query",
            "required": true,
            "description": "Svensk organisationsnummer (NNNNNN-NNNN eller 10 siffer).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, orgNumber, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "hitta"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/jobbi": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsJobbi",
        "summary": "Jobbi-arbeidsgiveranmeldelser for ett orgnr",
        "security": [],
        "parameters": [
          {
            "name": "orgNr",
            "in": "query",
            "required": true,
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, orgNr, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "jobbi"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/jobindex": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsJobindex",
        "summary": "Jobindex-arbeidsgiveranmeldelser (DK)",
        "security": [],
        "parameters": [
          {
            "name": "cvrOrSlug",
            "in": "query",
            "required": true,
            "description": "Dansk CVR (8 siffer) eller Jobindex-slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, cvrOrSlug, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "jobindex"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/komplett": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsKomplett",
        "summary": "Komplett produktanmeldelser",
        "security": [],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "required": true,
            "description": "Produkt-ID (alfanumerisk/bindestrek).",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, productId, productName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "komplett"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/mittanbud": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsMittanbud",
        "summary": "Mittanbud-anmeldelser for én bedriftsprofil",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Mittanbud-bedrifts-slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, slug, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "mittanbud"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/norskeanmeldelser": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsNorskeanmeldelser",
        "summary": "Norskeanmeldelser.no-anmeldelser for én bedrift",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Bedrifts-slug.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, slug, businessName, orgNr, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "norskeanmeldelser"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/prisguiden": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsPrisguiden",
        "summary": "Prisguiden butikkanmeldelser",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Prisguiden butikk-slug.",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, slug, businessName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "prisguiden"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/prisjakt": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsPrisjakt",
        "summary": "Prisjakt produktanmeldelser",
        "security": [],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "required": true,
            "description": "Prisjakt produkt-ID (numerisk).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{1,12}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, productId, productName, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "prisjakt"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/reco": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsReco",
        "summary": "Reco.se-anmeldelser for én bedriftsprofil",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Reco-bedrifts-slug.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall anmeldelser.",
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Anmeldelser og sammendrag.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "Toppnivå-felter: source, slug, businessName, averageRating, totalReviews, summary, reviews[]",
                  "properties": {
                    "source": {
                      "type": "string",
                      "example": "reco"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "reviews": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profil/produkt ikke funnet hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/trustpilot/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsTrustpilotSearch",
        "summary": "Søk etter profiler hos trustpilot",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `query`. Oppgi enten `q` eller `query` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "query",
            "in": "query",
            "required": false,
            "description": "Søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maks antall treff.",
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/gulesider/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsGulesiderSearch",
        "summary": "Søk etter profiler hos gulesider",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "location",
            "in": "query",
            "required": false,
            "description": "Sted-filter.",
            "schema": {
              "type": "string",
              "maxLength": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/legelisten/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsLegelistenSearch",
        "summary": "Søk etter profiler hos legelisten",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "specialty",
            "in": "query",
            "required": false,
            "description": "Spesialitet-filter.",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 30
            }
          },
          {
            "name": "location",
            "in": "query",
            "required": false,
            "description": "Sted-filter.",
            "schema": {
              "type": "string",
              "maxLength": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/bytt/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsByttSearch",
        "summary": "Søk etter profiler hos bytt",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/1881/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsN1881Search",
        "summary": "Søk etter profiler hos 1881",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "location",
            "in": "query",
            "required": false,
            "description": "Sted-filter.",
            "schema": {
              "type": "string",
              "maxLength": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/allabolag/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsAllabolagSearch",
        "summary": "Søk etter profiler hos allabolag",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/app-store/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsAppStoreSearch",
        "summary": "Søk etter profiler hos app-store",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/capterra/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsCapterraSearch",
        "summary": "Søk etter profiler hos capterra",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/hitta/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsHittaSearch",
        "summary": "Søk etter profiler hos hitta",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "location",
            "in": "query",
            "required": false,
            "description": "Sted-filter.",
            "schema": {
              "type": "string",
              "maxLength": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/jobbi/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsJobbiSearch",
        "summary": "Søk etter profiler hos jobbi",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/jobindex/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsJobindexSearch",
        "summary": "Søk etter profiler hos jobindex",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/mittanbud/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsMittanbudSearch",
        "summary": "Søk etter profiler hos mittanbud",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Kategori-filter.",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/norskeanmeldelser/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsNorskeanmeldelserSearch",
        "summary": "Søk etter profiler hos norskeanmeldelser",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/prisguiden/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsPrisguidenSearch",
        "summary": "Søk etter profiler hos prisguiden",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/prisjakt/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsPrisjaktSearch",
        "summary": "Søk etter profiler hos prisjakt",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/reco/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsRecoSearch",
        "summary": "Søk etter profiler hos reco",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst-parameter på tvers av hele KETL-API (#3606).\nAlias for `name`. Oppgi enten `q` eller `name` (minst én kreves).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Bedriftsnavn/søketekst. (alias `q`, kanonisk",
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Treffliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Ugyldig/manglende query-parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate-limit (vår politeness-limiter eller upstream)."
          },
          "451": {
            "description": "robots.txt tillater ikke scraping av denne stien."
          },
          "502": {
            "description": "Upstream-feil hos plattformen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "invalid_query"
                    },
                    "details": {},
                    "upstream_status": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Scraper avskrudd (kill-switch/feature-flag)."
          }
        }
      }
    },
    "/api/reviews/elkjop/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsElkjopSearch",
        "summary": "Søk hos Elkjøp (ikke støttet — search_unsupported)",
        "description": "Elkjøp har ingen fritekst-søke-upstream. Ruten svarer 501 med en\n`search_unsupported`-kontrakt som forteller hvilken identifikator\n(`productId`) root-ruten `/api/reviews/elkjop` krever, og hvordan den hentes.\n",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst (#3606) — ekkoes i responsen.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "501": {
            "description": "Fritekst-søk er ikke støttet for denne plattformen. Selvbeskrivende kontrakt\nsom forteller hvilken identifikator root-ruten krever og hvordan den hentes.\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "code",
                    "platform",
                    "identifier",
                    "hint"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "platform": {
                      "type": "string",
                      "example": "finn"
                    },
                    "message": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "object",
                      "properties": {
                        "param": {
                          "type": "string",
                          "example": "userId"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "example": {
                          "type": "string"
                        }
                      }
                    },
                    "rootEndpoint": {
                      "type": "string",
                      "example": "/api/reviews/finn?userId=1234567"
                    },
                    "hint": {
                      "type": "string"
                    },
                    "q": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/finn/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsFinnSearch",
        "summary": "Søk hos FINN.no (ikke støttet — search_unsupported)",
        "description": "FINN bruker-/tilbyder-id kan ikke fritekst-søkes. Ruten svarer 501 med en\n`search_unsupported`-kontrakt (root-ruten krever `userId`).\n",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst (#3606) — ekkoes i responsen.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "501": {
            "description": "Fritekst-søk er ikke støttet for denne plattformen. Selvbeskrivende kontrakt\nsom forteller hvilken identifikator root-ruten krever og hvordan den hentes.\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "code",
                    "platform",
                    "identifier",
                    "hint"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "platform": {
                      "type": "string",
                      "example": "finn"
                    },
                    "message": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "object",
                      "properties": {
                        "param": {
                          "type": "string",
                          "example": "userId"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "example": {
                          "type": "string"
                        }
                      }
                    },
                    "rootEndpoint": {
                      "type": "string",
                      "example": "/api/reviews/finn?userId=1234567"
                    },
                    "hint": {
                      "type": "string"
                    },
                    "q": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/komplett/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsKomplettSearch",
        "summary": "Søk hos Komplett (ikke støttet — search_unsupported)",
        "description": "Komplett har ingen fritekst-søke-upstream. Ruten svarer 501 med en\n`search_unsupported`-kontrakt (root-ruten krever `productId`).\n",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst (#3606) — ekkoes i responsen.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "501": {
            "description": "Fritekst-søk er ikke støttet for denne plattformen. Selvbeskrivende kontrakt\nsom forteller hvilken identifikator root-ruten krever og hvordan den hentes.\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "code",
                    "platform",
                    "identifier",
                    "hint"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "platform": {
                      "type": "string",
                      "example": "finn"
                    },
                    "message": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "object",
                      "properties": {
                        "param": {
                          "type": "string",
                          "example": "userId"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "example": {
                          "type": "string"
                        }
                      }
                    },
                    "rootEndpoint": {
                      "type": "string",
                      "example": "/api/reviews/finn?userId=1234567"
                    },
                    "hint": {
                      "type": "string"
                    },
                    "q": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/tripadvisor/search": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsTripadvisorSearch",
        "summary": "Søk hos TripAdvisor (ikke støttet — search_unsupported)",
        "description": "TripAdvisor er en hidden-source (ToS forbyr scraping) uten søk. Ruten svarer\n501 med en `search_unsupported`-kontrakt (root-ruten krever `slug`).\n",
        "security": [],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Kanonisk søketekst (#3606) — ekkoes i responsen.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "501": {
            "description": "Fritekst-søk er ikke støttet for denne plattformen. Selvbeskrivende kontrakt\nsom forteller hvilken identifikator root-ruten krever og hvordan den hentes.\n",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "code",
                    "platform",
                    "identifier",
                    "hint"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "search_unsupported"
                      ]
                    },
                    "platform": {
                      "type": "string",
                      "example": "finn"
                    },
                    "message": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "object",
                      "properties": {
                        "param": {
                          "type": "string",
                          "example": "userId"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "example": {
                          "type": "string"
                        }
                      }
                    },
                    "rootEndpoint": {
                      "type": "string",
                      "example": "/api/reviews/finn?userId=1234567"
                    },
                    "hint": {
                      "type": "string"
                    },
                    "q": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/bytt/categories": {
      "get": {
        "tags": [
          "reviews"
        ],
        "operationId": "getReviewsByttCategories",
        "summary": "Gyldige Bytt.no-kategorier",
        "security": [],
        "responses": {
          "200": {
            "description": "Kategoriliste.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "categories"
                  ],
                  "properties": {
                    "categories": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "forsikring"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/altinn-er/entities/{orgnr}": {
      "get": {
        "tags": [
          "connector:altinn-er"
        ],
        "operationId": "get_api_connectors_altinn_er_entities__orgnr_",
        "summary": "GET /api/connectors/altinn-er/entities/[orgnr] Organisasjonsdata fra Altinn platform API (Enhetsregi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/altinn-er/entities/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorAltinnErEntity",
                  "additionalProperties": false,
                  "description": "Normalisert organisasjonsenhet fra Altinn platform Register-API (Enhetsregisteret). Alle nøkler er alltid til stede; valgfrie verdier er null.",
                  "required": [
                    "orgNummer",
                    "navn",
                    "type",
                    "slettet",
                    "telefon",
                    "epost",
                    "nettside",
                    "postAdresse",
                    "forretningsAdresse",
                    "status"
                  ],
                  "properties": {
                    "orgNummer": {
                      "type": "string",
                      "pattern": "^\\d{9}$|^$",
                      "description": "Organisasjonsnummer (9 siffer). Tom streng hvis upstream mangler feltet.",
                      "example": "923609016"
                    },
                    "navn": {
                      "type": "string",
                      "description": "Organisasjonens navn. Tom streng hvis upstream mangler feltet.",
                      "example": "EQUINOR ASA"
                    },
                    "type": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Enhetstype (`type` eller `unitType` fra Altinn). Null hvis ukjent.",
                      "example": "AS"
                    },
                    "slettet": {
                      "type": "boolean",
                      "description": "Om enheten er markert som slettet (defaulter til false).",
                      "example": false
                    },
                    "telefon": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Telefon- eller mobilnummer. Null hvis ikke registrert.",
                      "example": "51990000"
                    },
                    "epost": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "E-postadresse. Null hvis ikke registrert.",
                      "example": "post@equinor.com"
                    },
                    "nettside": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Internett-/nettsideadresse. Null hvis ikke registrert.",
                      "example": "www.equinor.com"
                    },
                    "postAdresse": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Postadresse. Feltene er null når Altinn ikke oppgir dem.",
                      "required": [
                        "adresse",
                        "postnummer",
                        "poststed"
                      ],
                      "properties": {
                        "adresse": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Gate-/postadresse-linje.",
                          "example": "Postboks 8500 Forus"
                        },
                        "postnummer": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "4035"
                        },
                        "poststed": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "STAVANGER"
                        }
                      }
                    },
                    "forretningsAdresse": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Forretningsadresse. Feltene er null når Altinn ikke oppgir dem.",
                      "required": [
                        "adresse",
                        "postnummer",
                        "poststed"
                      ],
                      "properties": {
                        "adresse": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Gate-/besøksadresse-linje.",
                          "example": "Forusbeen 50"
                        },
                        "postnummer": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "4035"
                        },
                        "poststed": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "STAVANGER"
                        }
                      }
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Enhetsstatus (`unitStatus` fra Altinn). Null hvis ukjent.",
                      "example": "AKTIV"
                    }
                  },
                  "example": {
                    "orgNummer": "923609016",
                    "navn": "EQUINOR ASA",
                    "type": "AS",
                    "slettet": false,
                    "telefon": "51990000",
                    "epost": "post@equinor.com",
                    "nettside": "www.equinor.com",
                    "postAdresse": {
                      "adresse": "Postboks 8500 Forus",
                      "postnummer": "4035",
                      "poststed": "STAVANGER"
                    },
                    "forretningsAdresse": {
                      "adresse": "Forusbeen 50",
                      "postnummer": "4035",
                      "poststed": "STAVANGER"
                    },
                    "status": "AKTIV"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/altinn-er/health": {
      "get": {
        "tags": [
          "connector:altinn-er"
        ],
        "operationId": "get_api_connectors_altinn_er_health",
        "summary": "GET /api/connectors/altinn-er/health Default: statisk metadata — Altinn II ble avviklet 31.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/altinn-er/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/altinn-er/nace-codes": {
      "get": {
        "tags": [
          "connector:altinn-er"
        ],
        "operationId": "get_api_connectors_altinn_er_nace_codes",
        "summary": "GET /api/connectors/altinn-er/nace-codes NACE SN2007-koder fra SSB KLASS (klassifisering 6).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/altinn-er/nace-codes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/altinn-systemuser/byquery": {
      "get": {
        "tags": [
          "connector:altinn-systemuser"
        ],
        "operationId": "get_api_connectors_altinn_systemuser_byquery",
        "summary": "GET /api/connectors/altinn-systemuser/byquery?systemId=&orgnr=&externalRef= (#2849) Slå opp eksister",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/altinn-systemuser/byquery/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer systembrukeren tilhører (9 siffer)",
            "example": "923609016"
          },
          {
            "name": "systemId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._-]{3,128}$"
            },
            "description": "System-ID (3–128 tegn, alfa/num/._-)",
            "example": "my-system_v1"
          }
        ]
      }
    },
    "/api/connectors/altinn-systemuser/health": {
      "get": {
        "tags": [
          "connector:altinn-systemuser"
        ],
        "operationId": "get_api_connectors_altinn_systemuser_health",
        "summary": "GET /api/connectors/altinn-systemuser/health (#2849) Default: statisk metadata via `handleAltinnSyst",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/altinn-systemuser/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/altinn-systemuser/system-user": {
      "post": {
        "tags": [
          "connector:altinn-systemuser"
        ],
        "operationId": "post_api_connectors_altinn_systemuser_system_user",
        "summary": "POST /api/connectors/altinn-systemuser/system-user (#2849) Opprett ny systembruker-forespørsel (vend",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/altinn-systemuser/system-user/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/apis-is/company/{kennitala}": {
      "get": {
        "tags": [
          "connector:apis-is"
        ],
        "operationId": "get_api_connectors_apis_is_company__kennitala_",
        "summary": "GET /api/connectors/apis-is/company/[kennitala] (#3521).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/apis-is/company/[kennitala]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorApisIsCompany",
                  "additionalProperties": false,
                  "description": "Normalisert «company card» for ett islandsk selskap, slått opp på kennitala mot apis.is (islandsk foretaksregister-aggregator).",
                  "required": [
                    "id",
                    "name",
                    "address",
                    "status",
                    "vatNumbers",
                    "country",
                    "source"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kennitala (registreringsnummer) — kanonisk id, bindestrek strippet. Null når apis.is ikke returnerer `sn`.",
                      "pattern": "^\\d{10}$",
                      "example": "5811131290"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Selskapsnavn. Null når apis.is ikke returnerer `name`.",
                      "example": "Reykjavík ehf."
                    },
                    "address": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Adresse som fritekst. Null når apis.is ikke returnerer `address`.",
                      "example": "Borgartún 3, 105 Reykjavík"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "inactive",
                        "unknown"
                      ],
                      "description": "Aktiv-status utledet av apis.is `active`-flagg (`unknown` når feltet mangler eller er uventet).",
                      "example": "active"
                    },
                    "vatNumbers": {
                      "type": "array",
                      "description": "VAT-numre (virðisaukaskattur). Tom liste når ingen oppgis.",
                      "items": {
                        "type": "string",
                        "example": "131290"
                      },
                      "example": [
                        "131290"
                      ]
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "IS"
                      ],
                      "description": "Landkode — konstant `IS`.",
                      "example": "IS"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "apis.is"
                      ],
                      "description": "Proveniens (#74 explainability) — konstant `apis.is`.",
                      "example": "apis.is"
                    }
                  },
                  "example": {
                    "id": "5811131290",
                    "name": "Reykjavík ehf.",
                    "address": "Borgartún 3, 105 Reykjavík",
                    "status": "active",
                    "vatNumbers": [
                      "131290"
                    ],
                    "country": "IS",
                    "source": "apis.is"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "kennitala",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `kennitala` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/apis-is/health": {
      "get": {
        "tags": [
          "connector:apis-is"
        ],
        "operationId": "get_api_connectors_apis_is_health",
        "summary": "GET /api/connectors/apis-is/health (#3521).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/apis-is/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/apis-is/search": {
      "get": {
        "tags": [
          "connector:apis-is"
        ],
        "operationId": "get_api_connectors_apis_is_search",
        "summary": "GET /api/connectors/apis-is/search?query= (alias: ?name=) (#3521).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/apis-is/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorApisIsSearch",
                  "additionalProperties": false,
                  "description": "Søketreff i det islandske foretaksregisteret (apis.is): normaliserte selskaper med kennitala-id, status og VAT-numre.",
                  "required": [
                    "companies",
                    "count",
                    "query"
                  ],
                  "properties": {
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "address",
                          "status",
                          "vatNumbers",
                          "country",
                          "source"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "5902697199"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Icelandair ehf."
                          },
                          "address": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Reykjavíkurflugvöllur, 101 Reykjavík"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "inactive",
                              "unknown"
                            ]
                          },
                          "vatNumbers": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "12345"
                            ]
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "IS"
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "apis.is"
                            ]
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "query": {
                      "type": "string",
                      "example": "icelandair"
                    }
                  },
                  "example": {
                    "companies": [
                      {
                        "id": "5902697199",
                        "name": "Icelandair ehf.",
                        "address": "Reykjavíkurflugvöllur, 101 Reykjavík",
                        "status": "active",
                        "vatNumbers": [
                          "12345"
                        ],
                        "country": "IS",
                        "source": "apis.is"
                      }
                    ],
                    "count": 1,
                    "query": "icelandair"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng (selskapsnavn)",
            "example": "Marel"
          }
        ]
      }
    },
    "/api/connectors/arbeidstilsynet/fatalities": {
      "get": {
        "tags": [
          "connector:arbeidstilsynet"
        ],
        "operationId": "get_api_connectors_arbeidstilsynet_fatalities",
        "summary": "GET /api/connectors/arbeidstilsynet/fatalities Arbeidsskadedødsfall fordelt på ulykkestype eller mån",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbeidstilsynet/fatalities/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/arbeidstilsynet/health": {
      "get": {
        "tags": [
          "connector:arbeidstilsynet"
        ],
        "operationId": "get_api_connectors_arbeidstilsynet_health",
        "summary": "GET /api/connectors/arbeidstilsynet/health Default: statisk helsestatus (#1126).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbeidstilsynet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/arbeidstilsynet/summary": {
      "get": {
        "tags": [
          "connector:arbeidstilsynet"
        ],
        "operationId": "get_api_connectors_arbeidstilsynet_summary",
        "summary": "GET /api/connectors/arbeidstilsynet/summary Totalt antall arbeidsskadedødsfall per år (#1126).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbeidstilsynet/summary/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/arbetsformedlingen/ad/{id}": {
      "get": {
        "tags": [
          "connector:arbetsformedlingen"
        ],
        "operationId": "get_api_connectors_arbetsformedlingen_ad__id_",
        "summary": "GET /api/connectors/arbetsformedlingen/ad/{id}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbetsformedlingen/ad/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorArbetsformedlingenAd",
                  "additionalProperties": false,
                  "description": "Én normalisert svensk stillingsannonse (Platsbanken / JobTech JobAd-API), returnert direkte på toppnivå — identisk skjema med et `jobs[]`-element fra `/search` (#4404).",
                  "required": [
                    "id"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^\\d{1,20}$",
                      "description": "Annonse-id (JobTech), alltid stringifisert.",
                      "example": "12345678"
                    },
                    "headline": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Annonsetittel.",
                      "example": "Sjuksköterska till akutmottagningen"
                    },
                    "employer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Arbeidsgivers navn.",
                      "example": "Region Stockholm"
                    },
                    "employerOrgnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Arbeidsgivers svenske organisasjonsnummer.",
                      "example": "2321000016"
                    },
                    "workplace": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Arbeidsplassens/avdelingens navn.",
                      "example": "Karolinska Universitetssjukhuset"
                    },
                    "municipality": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kommune for arbeidsstedet.",
                      "example": "Stockholm"
                    },
                    "municipalityCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Svensk kommunekode.",
                      "example": "0180"
                    },
                    "region": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Län/region for arbeidsstedet.",
                      "example": "Stockholms län"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Land for arbeidsstedet.",
                      "example": "Sverige"
                    },
                    "occupation": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Yrke (taksonomi-label).",
                      "example": "Sjuksköterska, grundutbildad"
                    },
                    "occupationField": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Yrkesområde (taksonomi-label).",
                      "example": "Hälso- och sjukvård"
                    },
                    "employmentType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Ansettelsesform (taksonomi-label).",
                      "example": "Vanlig anställning"
                    },
                    "workingHoursType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Arbeidstidstype (taksonomi-label).",
                      "example": "Heltid"
                    },
                    "duration": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Ansettelsens varighet (taksonomi-label).",
                      "example": "Tills vidare"
                    },
                    "numberOfVacancies": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall ledige stillinger i annonsen.",
                      "example": 3
                    },
                    "publicationDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Publiseringstidspunkt (ISO-8601).",
                      "example": "2026-06-10T09:00:00"
                    },
                    "applicationDeadline": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Søknadsfrist (ISO-8601).",
                      "example": "2026-07-15T23:59:59"
                    },
                    "webpageUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lenke til annonsen hos arbeidsgiver/Platsbanken.",
                      "example": "https://arbetsformedlingen.se/platsbanken/annonser/12345678"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Full annonsetekst (uavkortet i `/ad`-endepunktet; avkortet snippet i `/search`).",
                      "example": "Vi söker en engagerad sjuksköterska till vår akutmottagning…"
                    }
                  },
                  "example": {
                    "id": "12345678",
                    "headline": "Sjuksköterska till akutmottagningen",
                    "employer": "Region Stockholm",
                    "employerOrgnr": "2321000016",
                    "workplace": "Karolinska Universitetssjukhuset",
                    "municipality": "Stockholm",
                    "municipalityCode": "0180",
                    "region": "Stockholms län",
                    "country": "Sverige",
                    "occupation": "Sjuksköterska, grundutbildad",
                    "occupationField": "Hälso- och sjukvård",
                    "employmentType": "Vanlig anställning",
                    "workingHoursType": "Heltid",
                    "duration": "Tills vidare",
                    "numberOfVacancies": 3,
                    "publicationDate": "2026-06-10T09:00:00",
                    "applicationDeadline": "2026-07-15T23:59:59",
                    "webpageUrl": "https://arbetsformedlingen.se/platsbanken/annonser/12345678",
                    "description": "Vi söker en engagerad sjuksköterska till vår akutmottagning…"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/arbetsformedlingen/health": {
      "get": {
        "tags": [
          "connector:arbetsformedlingen"
        ],
        "operationId": "get_api_connectors_arbetsformedlingen_health",
        "summary": "GET /api/connectors/arbetsformedlingen/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbetsformedlingen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/arbetsformedlingen/search": {
      "get": {
        "tags": [
          "connector:arbetsformedlingen"
        ],
        "operationId": "get_api_connectors_arbetsformedlingen_search",
        "summary": "GET /api/connectors/arbetsformedlingen/search",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbetsformedlingen/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorArbetsformedlingenSearch",
                  "additionalProperties": false,
                  "description": "Paginert stillingssøk hos Arbetsförmedlingen. Hver treff er en normalisert jobbannonse med arbeidsgiver, sted, yrke og søknadsfrist.",
                  "required": [
                    "jobs",
                    "total",
                    "positions",
                    "offset",
                    "limit",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "jobs": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "headline",
                          "employer",
                          "employerOrgnr",
                          "workplace",
                          "municipality",
                          "municipalityCode",
                          "region",
                          "country",
                          "occupation",
                          "occupationField",
                          "employmentType",
                          "workingHoursType",
                          "duration",
                          "numberOfVacancies",
                          "publicationDate",
                          "applicationDeadline",
                          "webpageUrl",
                          "description"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "12345"
                          },
                          "headline": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Systemutvecklare"
                          },
                          "employer": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Volvo AB"
                          },
                          "employerOrgnr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "5560360793"
                          },
                          "workplace": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Göteborg"
                          },
                          "municipality": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Göteborg"
                          },
                          "municipalityCode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1480"
                          },
                          "region": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Västra Götaland"
                          },
                          "country": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Sverige"
                          },
                          "occupation": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Mjukvaruutvecklare"
                          },
                          "occupationField": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Data/IT"
                          },
                          "employmentType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Tillsvidare"
                          },
                          "workingHoursType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Heltid"
                          },
                          "duration": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Tills vidare"
                          },
                          "numberOfVacancies": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 2
                          },
                          "publicationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-04-01"
                          },
                          "applicationDeadline": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-05-01"
                          },
                          "webpageUrl": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://arbetsformedlingen.se/annons/12345"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 42
                    },
                    "positions": {
                      "type": "integer",
                      "description": "Totalt antall ledige stillinger på tvers av treff.",
                      "example": 55
                    },
                    "offset": {
                      "type": "integer",
                      "example": 0
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "arbetsformedlingen"
                      ]
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "jobs": [
                      {
                        "id": "12345",
                        "headline": "Systemutvecklare",
                        "employer": "Volvo AB",
                        "employerOrgnr": "5560360793",
                        "workplace": "Göteborg",
                        "municipality": "Göteborg",
                        "municipalityCode": "1480",
                        "region": "Västra Götaland",
                        "country": "Sverige",
                        "occupation": "Mjukvaruutvecklare",
                        "occupationField": "Data/IT",
                        "employmentType": "Tillsvidare",
                        "workingHoursType": "Heltid",
                        "duration": "Tills vidare",
                        "numberOfVacancies": 2,
                        "publicationDate": "2025-04-01",
                        "applicationDeadline": "2025-05-01",
                        "webpageUrl": "https://arbetsformedlingen.se/annons/12345",
                        "description": "Vi söker en systemutvecklare."
                      }
                    ],
                    "total": 42,
                    "positions": 55,
                    "offset": 0,
                    "limit": 20,
                    "source": "arbetsformedlingen",
                    "fetchedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/arbetsformedlingen/stats": {
      "get": {
        "tags": [
          "connector:arbetsformedlingen"
        ],
        "operationId": "get_api_connectors_arbetsformedlingen_stats",
        "summary": "GET /api/connectors/arbetsformedlingen/stats",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/arbetsformedlingen/stats/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/avinor/airlines": {
      "get": {
        "tags": [
          "connector:avinor"
        ],
        "operationId": "get_api_connectors_avinor_airlines",
        "summary": "GET /api/connectors/avinor/airlines Henter liste over flyselskaper fra Avinor.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avinor/airlines/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/avinor/airports": {
      "get": {
        "tags": [
          "connector:avinor"
        ],
        "operationId": "get_api_connectors_avinor_airports",
        "summary": "GET /api/connectors/avinor/airports Henter liste over norske flyplasser fra Avinor.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avinor/airports/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/avinor/flights": {
      "get": {
        "tags": [
          "connector:avinor"
        ],
        "operationId": "get_api_connectors_avinor_flights",
        "summary": "GET /api/connectors/avinor/flights?airport=OSL&direction=D&from=1&to=7 Henter flyavganger og ankomst",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avinor/flights/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "airport",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{3}$"
            },
            "description": "IATA-flyplasskode",
            "example": "OSL"
          }
        ]
      }
    },
    "/api/connectors/avinor/health": {
      "get": {
        "tags": [
          "connector:avinor"
        ],
        "operationId": "get_api_connectors_avinor_health",
        "summary": "GET /api/connectors/avinor/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avinor/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/avinor/status": {
      "get": {
        "tags": [
          "connector:avinor"
        ],
        "operationId": "get_api_connectors_avinor_status",
        "summary": "GET /api/connectors/avinor/status?airport=OSL Henter gjeldende flystatuser fra Avinor flightStatuses",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avinor/status/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorAvinorStatus",
                  "additionalProperties": false,
                  "description": "Gjeldende flystatus-meldinger for én norsk flyplass fra Avinor flightStatuses-feed (nær-sanntid, TTL 5 min). Tom `alerts`-array betyr ingen aktive sanntids-meldinger.",
                  "required": [
                    "airport",
                    "checkedAt",
                    "hasActiveAlerts",
                    "alerts"
                  ],
                  "properties": {
                    "airport": {
                      "type": "string",
                      "pattern": "^[A-Z]{3}$",
                      "description": "IATA-kode for flyplassen forespørselen gjaldt (alltid store bokstaver).",
                      "example": "OSL"
                    },
                    "checkedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO-8601-tidspunkt for når dataene ble hentet/cachet. Settes til cache-tidspunktet ved hit/stale, ellers til nåtid ved fersk henting.",
                      "example": "2026-06-24T08:15:00.000Z"
                    },
                    "hasActiveAlerts": {
                      "type": "boolean",
                      "description": "Avledet flagg — `true` når `alerts`-arrayet har minst ett element.",
                      "example": true
                    },
                    "alerts": {
                      "type": "array",
                      "description": "Flystatus-meldinger (tom ved ingen aktive meldinger).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én flystatus-melding for en spesifikk flyvning.",
                        "required": [
                          "flightId",
                          "statusCode",
                          "statusText",
                          "statusTime"
                        ],
                        "properties": {
                          "flightId": {
                            "type": "string",
                            "description": "Flyvningsnummer (alltid ikke-tom — meldinger uten flightId droppes).",
                            "example": "DY602"
                          },
                          "statusCode": {
                            "type": "string",
                            "description": "Rå statuskode fra Avinor. Kjente koder er A/C/D/E/N; kan være tom streng eller en ukjent kode om feeden mangler/avviker.",
                            "example": "D"
                          },
                          "statusText": {
                            "type": "string",
                            "description": "Menneskelesbar status. Slås opp fra statuskoden (A=Landed, C=Cancelled, D=Departed, E=New time, N=New flight); faller tilbake til den rå koden hvis den er ukjent.",
                            "example": "Departed"
                          },
                          "statusTime": {
                            "type": "string",
                            "nullable": true,
                            "format": "date-time",
                            "description": "ISO-8601-tidspunkt for statusen, eller `null` om ikke oppgitt.",
                            "example": "2026-06-24T08:05:00Z"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "airport": "OSL",
                    "checkedAt": "2026-06-24T08:15:00.000Z",
                    "hasActiveAlerts": true,
                    "alerts": [
                      {
                        "flightId": "DY602",
                        "statusCode": "D",
                        "statusText": "Departed",
                        "statusTime": "2026-06-24T08:05:00Z"
                      },
                      {
                        "flightId": "SK4109",
                        "statusCode": "E",
                        "statusText": "New time",
                        "statusTime": "2026-06-24T09:30:00Z"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "airport",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{3}$"
            },
            "description": "IATA-flyplasskode",
            "example": "OSL"
          }
        ]
      }
    },
    "/api/connectors/avoindata-fi/dataset/{id}": {
      "get": {
        "tags": [
          "connector:avoindata-fi"
        ],
        "operationId": "get_api_connectors_avoindata_fi_dataset__id_",
        "summary": "GET /api/connectors/avoindata-fi/dataset/[id] (#1894).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avoindata-fi/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorAvoindataFiDataset",
                  "additionalProperties": false,
                  "description": "Normalisert datasett-detalj fra avoindata.fi (CKAN package_show).",
                  "required": [
                    "id",
                    "name",
                    "title",
                    "description",
                    "organization",
                    "license",
                    "modified",
                    "created",
                    "tags",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-datasettets interne id (UUID). Null hvis upstream mangler.",
                      "example": "a1b2c3d4-1234-5678-9abc-def012345678"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Maskinlesbart slug/navn (URL-vennlig).",
                      "example": "vaestotietokanta"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Menneskelesbar tittel på datasettet.",
                      "example": "Väestötietokanta"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Fritekst-beskrivelse (CKAN `notes`).",
                      "example": "Suomen väestötietoja kunnittain ja vuosittain."
                    },
                    "organization": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Eier-organisasjon (title, faller tilbake til name).",
                      "example": "Tilastokeskus"
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lisens-tittel (CKAN `license_title`).",
                      "example": "Creative Commons Attribution 4.0"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret i katalogen (CKAN `metadata_modified`, ISO-8601).",
                      "example": "2026-01-15T08:30:00.000000"
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opprettet i katalogen (CKAN `metadata_created`, ISO-8601).",
                      "example": "2020-03-01T10:00:00.000000"
                    },
                    "tags": {
                      "type": "array",
                      "description": "Emneord (tomt array ved ingen tags).",
                      "items": {
                        "type": "string",
                        "example": "väestö"
                      }
                    },
                    "resources": {
                      "type": "array",
                      "description": "Vedlagte ressurser/filer (tomt array ved ingen ressurser).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "format",
                          "url"
                        ],
                        "description": "Én CKAN-ressurs. Alle felt nullable — CKAN utelater det som mangler.",
                        "properties": {
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressursens visningsnavn.",
                            "example": "Väestö kunnittain 2025 (CSV)"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Filformat slik CKAN oppgir det.",
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Nedlastings-URL for ressursen.",
                            "example": "https://avoindata.suomi.fi/data/dataset/.../resource/x.csv"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "a1b2c3d4-1234-5678-9abc-def012345678",
                    "name": "vaestotietokanta",
                    "title": "Väestötietokanta",
                    "description": "Suomen väestötietoja kunnittain ja vuosittain.",
                    "organization": "Tilastokeskus",
                    "license": "Creative Commons Attribution 4.0",
                    "modified": "2026-01-15T08:30:00.000000",
                    "created": "2020-03-01T10:00:00.000000",
                    "tags": [
                      "väestö",
                      "kunnat"
                    ],
                    "resources": [
                      {
                        "name": "Väestö kunnittain 2025 (CSV)",
                        "format": "CSV",
                        "url": "https://avoindata.suomi.fi/data/dataset/.../resource/x.csv"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/avoindata-fi/health": {
      "get": {
        "tags": [
          "connector:avoindata-fi"
        ],
        "operationId": "get_api_connectors_avoindata_fi_health",
        "summary": "GET /api/connectors/avoindata-fi/health (#1894, #3076).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avoindata-fi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/avoindata-fi/organisations": {
      "get": {
        "tags": [
          "connector:avoindata-fi"
        ],
        "operationId": "get_api_connectors_avoindata_fi_organisations",
        "summary": "GET /api/connectors/avoindata-fi/organisations (#1894).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avoindata-fi/organisations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanOrganisations",
                  "additionalProperties": false,
                  "description": "Liste over organisasjons-slugs/navn i et CKAN-register (fra `organization_list`).",
                  "required": [
                    "organisations"
                  ],
                  "properties": {
                    "organisations": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "ilmatieteen-laitos",
                        "tilastokeskus"
                      ]
                    }
                  },
                  "example": {
                    "organisations": [
                      "ilmatieteen-laitos",
                      "tilastokeskus"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/avoindata-fi/search": {
      "get": {
        "tags": [
          "connector:avoindata-fi"
        ],
        "operationId": "get_api_connectors_avoindata_fi_search",
        "summary": "GET /api/connectors/avoindata-fi/search?q=&rows=&start= (#1894).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/avoindata-fi/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanDatasetSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søkeside fra et CKAN-basert åpen-data-register. Hvert datasett har organisasjon, lisens, tagger og ressurser (distribusjoner).",
                  "required": [
                    "datasets",
                    "count",
                    "rows",
                    "start"
                  ],
                  "properties": {
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "license",
                          "modified",
                          "created",
                          "tags",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "abc-123"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "vaerdata-2024"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Værdata 2024"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Ilmatieteen laitos"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CC-BY-4.0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-10"
                          },
                          "created": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-02-01"
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "vær",
                              "klima"
                            ]
                          },
                          "resources": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "name",
                                "format",
                                "url"
                              ],
                              "properties": {
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV-fil"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://example.org/data.csv"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream.",
                      "example": 120
                    },
                    "rows": {
                      "type": "integer",
                      "description": "Sidestørrelse (limit).",
                      "example": 20
                    },
                    "start": {
                      "type": "integer",
                      "description": "Offset.",
                      "example": 0
                    }
                  },
                  "example": {
                    "datasets": [
                      {
                        "id": "abc-123",
                        "name": "vaerdata-2024",
                        "title": "Værdata 2024",
                        "description": "Observasjoner per stasjon.",
                        "organization": "Ilmatieteen laitos",
                        "license": "CC-BY-4.0",
                        "modified": "2025-01-10",
                        "created": "2024-02-01",
                        "tags": [
                          "vær",
                          "klima"
                        ],
                        "resources": [
                          {
                            "name": "CSV-fil",
                            "format": "CSV",
                            "url": "https://example.org/data.csv"
                          }
                        ]
                      }
                    ],
                    "count": 120,
                    "rows": 20,
                    "start": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng",
            "example": "budget"
          }
        ]
      }
    },
    "/api/connectors/bane-nor/departures/{stationId}": {
      "get": {
        "tags": [
          "connector:bane-nor"
        ],
        "operationId": "get_api_connectors_bane_nor_departures__stationId_",
        "summary": "GET /api/connectors/bane-nor/departures/{stationId} SUNSET (2026-05-30): Bane NOR åpne API-er sunset",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bane-nor/departures/[stationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "stationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `stationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/bane-nor/health": {
      "get": {
        "tags": [
          "connector:bane-nor"
        ],
        "operationId": "get_api_connectors_bane_nor_health",
        "summary": "GET /api/connectors/bane-nor/health Formell sunset for Bane NOR jernbane-connectoren (#2769).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bane-nor/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/bane-nor/punctuality": {
      "get": {
        "tags": [
          "connector:bane-nor"
        ],
        "operationId": "get_api_connectors_bane_nor_punctuality",
        "summary": "GET /api/connectors/bane-nor/punctuality SUNSET (2026-05-30): Bane NOR åpne API-er sunset (#2769).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bane-nor/punctuality/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/bane-nor/stations": {
      "get": {
        "tags": [
          "connector:bane-nor"
        ],
        "operationId": "get_api_connectors_bane_nor_stations",
        "summary": "GET /api/connectors/bane-nor/stations SUNSET (2026-05-30): Bane NOR åpne API-er sunset til fordel fo",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bane-nor/stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/barentswatch/ais": {
      "get": {
        "tags": [
          "connector:barentswatch"
        ],
        "operationId": "get_api_connectors_barentswatch_ais",
        "summary": "GET /api/connectors/barentswatch/ais Siste kjente AIS-posisjoner fra BarentsWatch — #414.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/barentswatch/ais/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/barentswatch/fishinfo/{path}": {
      "get": {
        "tags": [
          "connector:barentswatch"
        ],
        "operationId": "get_api_connectors_barentswatch_fishinfo__path_",
        "summary": "GET /api/connectors/barentswatch/fishinfo/<subpath> Generic proxy mot BarentsWatch BW API (FiskInfo,",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/barentswatch/fishinfo/[...path]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `path` — se connector-dokumentasjon for format."
          }
        ],
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/barentswatch/health": {
      "get": {
        "tags": [
          "connector:barentswatch"
        ],
        "operationId": "get_api_connectors_barentswatch_health",
        "summary": "GET /api/connectors/barentswatch/health Status for BarentsWatch-connectoren (#938).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/barentswatch/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/bbr-dk/building/{id}": {
      "get": {
        "tags": [
          "connector:bbr-dk"
        ],
        "operationId": "get_api_connectors_bbr_dk_building__id_",
        "summary": "GET /api/connectors/bbr-dk/building/{id} Refs: #1199, #2595 api.dataforsyningen.dk/bbrlight/* er avv",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bbr-dk/building/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBbrDkBuilding",
                  "additionalProperties": false,
                  "description": "Én normalisert dansk bygning fra BBR (Bygnings- og Boligregistret). Felt med manglende kildeverdi serialiseres som null.",
                  "required": [
                    "source"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "BBR-bygnings-ID (DAWA `id`).",
                      "example": "12345678-90ab-cdef-1234-567890abcdef"
                    },
                    "kommunekode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Dansk kommunekode (DAWA `byg_kommunekode`).",
                      "example": "0101"
                    },
                    "adresse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Adressebetegnelse fra tilknyttet adgangsadresse.",
                      "example": "Rådhuspladsen 1, 1550 København V"
                    },
                    "adgangsadresseid": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ID for tilknyttet adgangsadresse (`adgangsadresseid` el. `adgangsadresse.id`).",
                      "example": "0a3f5089-0e8a-32b8-e044-0003ba298018"
                    },
                    "bebyggetAreal": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Bebygget areal i m² (DAWA `byg_bebygget_areal`).",
                      "example": 120
                    },
                    "samletAreal": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Samlet bygningsareal i m² (DAWA `byg_samlet_bygnings_areal`).",
                      "example": 240
                    },
                    "antalEtager": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Antall etasjer (DAWA `byg_antal_etager`).",
                      "example": 2
                    },
                    "opfoerelsesar": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Oppførelsesår (DAWA `byg_opfoerelsesar`).",
                      "example": 1965
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "BBR-statuskode for bygningen (DAWA `byg_status`).",
                      "example": "6"
                    },
                    "anvendelse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Anvendelseskode for bygningen (DAWA `byg_anvendelse`).",
                      "example": "120"
                    },
                    "varmeinstallation": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Varmeinstallasjonskode (DAWA `byg_varmeinstallation`).",
                      "example": "1"
                    },
                    "ydervaeggMateriale": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Materialkode for yttervegg (DAWA `byg_ydervaegg_materiale`).",
                      "example": "1"
                    },
                    "tagMateriale": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Materialkode for tak (DAWA `tagdaeknings_materiale`).",
                      "example": "3"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "bbr-dk"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "bbr-dk"
                    }
                  },
                  "example": {
                    "id": "12345678-90ab-cdef-1234-567890abcdef",
                    "kommunekode": "0101",
                    "adresse": "Rådhuspladsen 1, 1550 København V",
                    "adgangsadresseid": "0a3f5089-0e8a-32b8-e044-0003ba298018",
                    "bebyggetAreal": 120,
                    "samletAreal": 240,
                    "antalEtager": 2,
                    "opfoerelsesar": 1965,
                    "status": "6",
                    "anvendelse": "120",
                    "varmeinstallation": "1",
                    "ydervaeggMateriale": "1",
                    "tagMateriale": "3",
                    "source": "bbr-dk"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/bbr-dk/buildings": {
      "get": {
        "tags": [
          "connector:bbr-dk"
        ],
        "operationId": "get_api_connectors_bbr_dk_buildings",
        "summary": "GET /api/connectors/bbr-dk/buildings?adgangsadresseid=&kommunekode= Søk bygninger i BBR (Bygnings- o",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bbr-dk/buildings/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/bbr-dk/ground": {
      "get": {
        "tags": [
          "connector:bbr-dk"
        ],
        "operationId": "get_api_connectors_bbr_dk_ground",
        "summary": "GET /api/connectors/bbr-dk/ground?adgangsadresseid= Hent matrikkeldata fra BBR (Bygnings- og Boligre",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bbr-dk/ground/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/bbr-dk/health": {
      "get": {
        "tags": [
          "connector:bbr-dk"
        ],
        "operationId": "get_api_connectors_bbr_dk_health",
        "summary": "GET /api/connectors/bbr-dk/health Helsesjekk for BBR-dk connector.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bbr-dk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/bbr-dk/units": {
      "get": {
        "tags": [
          "connector:bbr-dk"
        ],
        "operationId": "get_api_connectors_bbr_dk_units",
        "summary": "GET /api/connectors/bbr-dk/units?bygningid=&adgangsadresseid= Hent boligenheter fra BBR (Bygnings- o",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bbr-dk/units/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/bolagsverket/arendestatus/{orgnr}": {
      "get": {
        "tags": [
          "connector:bolagsverket"
        ],
        "operationId": "get_api_connectors_bolagsverket_arendestatus__orgnr_",
        "summary": "GET /api/connectors/bolagsverket/arendestatus/[orgnr] Slå opp arendestatus for et svensk selskap mot",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bolagsverket/arendestatus/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBolagsverketArendestatus",
                  "additionalProperties": false,
                  "description": "Status på årsredovisnings-ärenden for en svensk virksomhet hos Bolagsverket,\nmed normalisert selskaps-dokument og hendelser.\n",
                  "required": [
                    "company",
                    "events",
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "bolagsverket"
                      ],
                      "description": "Proveniens — kilden som leverte payloaden (#74 explainability).",
                      "example": "bolagsverket"
                    },
                    "company": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "companyKey",
                        "identifiers",
                        "legalName",
                        "arendeCount",
                        "latestStatus",
                        "latestStatusAt",
                        "updatedAt",
                        "source"
                      ],
                      "properties": {
                        "companyKey": {
                          "type": "string",
                          "description": "Intern, stabil entitetsnøkkel (`SE:<orgnr>`).",
                          "example": "SE:5560360793"
                        },
                        "identifiers": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "country",
                            "orgnr"
                          ],
                          "properties": {
                            "country": {
                              "type": "string",
                              "enum": [
                                "SE"
                              ]
                            },
                            "orgnr": {
                              "type": "string",
                              "description": "Svensk organisationsnummer.",
                              "example": "5560360793"
                            }
                          }
                        },
                        "legalName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Virksomhetsnavn (null hvis ukjent upstream).",
                          "example": "Volvo AB"
                        },
                        "arendeCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Antall årsredovisnings-ärenden registrert.",
                          "example": 3
                        },
                        "latestStatus": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Status på nyeste ärende (null hvis ingen).",
                          "example": "Registrerad"
                        },
                        "latestStatusAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Tidspunkt for nyeste status (ISO-8601), eller null.",
                          "example": "2025-07-01"
                        },
                        "updatedAt": {
                          "type": "integer",
                          "description": "Tidspunkt da dokumentet sist ble normalisert (epoch-millisekund).",
                          "example": 1746345000000
                        },
                        "source": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "system",
                            "fetchedAt"
                          ],
                          "properties": {
                            "system": {
                              "type": "string",
                              "enum": [
                                "bolagsverket"
                              ]
                            },
                            "fetchedAt": {
                              "type": "integer",
                              "description": "Tidspunkt da rå-payloaden ble hentet upstream (epoch-millisekund).",
                              "example": 1746345000000
                            }
                          }
                        }
                      }
                    },
                    "events": {
                      "type": "array",
                      "description": "Normaliserte årsredovisnings-status-hendelser.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "eventId",
                          "companyKey",
                          "source",
                          "eventType",
                          "occurredAt",
                          "upstreamId",
                          "status",
                          "arendetyp",
                          "rakenskapsar",
                          "fetchedAt"
                        ],
                        "properties": {
                          "eventId": {
                            "type": "string",
                            "description": "Stabil, deterministisk hendelses-ID.",
                            "example": "SE:5560360793:2024"
                          },
                          "companyKey": {
                            "type": "string",
                            "example": "SE:5560360793"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "bolagsverket"
                            ]
                          },
                          "eventType": {
                            "type": "string",
                            "enum": [
                              "annual_report_status"
                            ]
                          },
                          "occurredAt": {
                            "type": "string",
                            "description": "Tidspunkt hendelsen inntraff (ISO-8601).",
                            "example": "2025-07-01"
                          },
                          "upstreamId": {
                            "type": "string",
                            "description": "Upstream-ärende-identifikator.",
                            "example": "2024"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Registrerad"
                          },
                          "arendetyp": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Årsredovisning"
                          },
                          "rakenskapsar": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Räkenskapsår ärendet gjelder.",
                            "example": "2024"
                          },
                          "fetchedAt": {
                            "type": "integer",
                            "description": "Tidspunkt da payloaden ble hentet upstream (epoch-millisekund).",
                            "example": 1746345000000
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "bolagsverket",
                    "company": {
                      "companyKey": "SE:5560360793",
                      "identifiers": {
                        "country": "SE",
                        "orgnr": "5560360793"
                      },
                      "legalName": "Volvo AB",
                      "arendeCount": 3,
                      "latestStatus": "Registrerad",
                      "latestStatusAt": "2025-07-01",
                      "updatedAt": 1746345000000,
                      "source": {
                        "system": "bolagsverket",
                        "fetchedAt": 1746345000000
                      }
                    },
                    "events": [
                      {
                        "eventId": "SE:5560360793:2024",
                        "companyKey": "SE:5560360793",
                        "source": "bolagsverket",
                        "eventType": "annual_report_status",
                        "occurredAt": "2025-07-01",
                        "upstreamId": "2024",
                        "status": "Registrerad",
                        "arendetyp": "Årsredovisning",
                        "rakenskapsar": "2024",
                        "fetchedAt": 1746345000000
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ],
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/bolagsverket/health": {
      "get": {
        "tags": [
          "connector:bolagsverket"
        ],
        "operationId": "get_api_connectors_bolagsverket_health",
        "summary": "GET /api/connectors/bolagsverket/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/bolagsverket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg-konkurs/by-county": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_by_county",
        "summary": "GET /api/connectors/brreg-konkurs/by-county?year=2025 Konkurser fordelt på fylke + kommune, aggreger",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/by-county/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Årstall (default: inneværende)",
            "example": "2025"
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/by-industry": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_by_industry",
        "summary": "GET /api/connectors/brreg-konkurs/by-industry?year=2025[&nace=47] Konkurser fordelt på NACE-næring, ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/by-industry/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Årstall (default: inneværende)",
            "example": "2025"
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/health": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_health",
        "summary": "GET /api/connectors/brreg-konkurs/health Default: statisk metadata + statisk konfigurasjonsstatus.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg-konkurs/monthly": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_monthly",
        "summary": "GET /api/connectors/brreg-konkurs/monthly?months=24 Siste N måneder med konkursåpninger og year-over",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/monthly/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "months",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "12"
            },
            "description": "Antall måneder bakover"
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/recent": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_recent",
        "summary": "GET /api/connectors/brreg-konkurs/recent?days=7[&size=20][&page=0] Returnerer konkursåpninger regist",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/recent/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "7"
            },
            "description": "Antall dager bakover"
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/search": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_search",
        "summary": "GET /api/connectors/brreg-konkurs/search?q={navn}[&size=20][&page=0] Fritekst-søk i Brreg Konkursreg",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregKonkursSearch",
                  "additionalProperties": false,
                  "description": "Paginert søk i Brregs konkursregister. Hver rad er en normalisert konkurssak med bo-referanse, åpningsdato, behandlingstype og eventuell bostyrer.",
                  "required": [
                    "data",
                    "page"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "boRef",
                          "orgnr",
                          "navn",
                          "aapningsDato",
                          "behandlingstype",
                          "status",
                          "rettskrets",
                          "bostyrer",
                          "ansatteBerort",
                          "naeringskode",
                          "naeringskodeBeskrivelse",
                          "stiftelsesdato",
                          "sisteEndring"
                        ],
                        "properties": {
                          "boRef": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-12345"
                          },
                          "orgnr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "912345678"
                          },
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Eksempel AS"
                          },
                          "aapningsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-06-01"
                          },
                          "behandlingstype": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Konkurs"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Under bobehandling"
                          },
                          "rettskrets": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Oslo byfogdembete"
                          },
                          "bostyrer": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "required": [
                              "navn",
                              "advokatOrgnr"
                            ],
                            "properties": {
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Advokat Kari Nordmann"
                              },
                              "advokatOrgnr": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          },
                          "ansatteBerort": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 12
                          },
                          "naeringskode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "47.111"
                          },
                          "naeringskodeBeskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Butikkhandel"
                          },
                          "stiftelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sisteEndring": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    },
                    "page": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "size",
                        "totalElements",
                        "totalPages",
                        "number"
                      ],
                      "properties": {
                        "size": {
                          "type": "integer",
                          "example": 20
                        },
                        "totalElements": {
                          "type": "integer",
                          "example": 145
                        },
                        "totalPages": {
                          "type": "integer",
                          "example": 8
                        },
                        "number": {
                          "type": "integer",
                          "example": 0
                        }
                      }
                    }
                  },
                  "example": {
                    "data": [
                      {
                        "boRef": "2024-12345",
                        "orgnr": "912345678",
                        "navn": "Eksempel AS",
                        "aapningsDato": "2024-06-01",
                        "behandlingstype": "Konkurs",
                        "status": "Under bobehandling",
                        "rettskrets": "Oslo byfogdembete",
                        "bostyrer": {
                          "navn": "Advokat Kari Nordmann",
                          "advokatOrgnr": null
                        },
                        "ansatteBerort": 12,
                        "naeringskode": "47.111",
                        "naeringskodeBeskrivelse": "Butikkhandel",
                        "stiftelsesdato": "2010-01-01",
                        "sisteEndring": "2024-06-05"
                      }
                    ],
                    "page": {
                      "size": 20,
                      "totalElements": 145,
                      "totalPages": 8,
                      "number": 0
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            },
            "description": "Sidenummer (0-indeksert)"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søketerm (virksomhetsnavn) — 400 uten",
            "example": "Thomas Cook"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Antall treff per side"
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/trend": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs_trend",
        "summary": "GET /api/connectors/brreg-konkurs/trend?year=2025&granularity=month Konkurs-trend over tid, aggreger",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/trend/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "granularity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "month",
                "quarter",
                "year"
              ],
              "default": "month"
            },
            "description": "Tidsoppløsning",
            "example": "month"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Årstall å analysere",
            "example": "2025"
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs__orgnr_",
        "summary": "GET /api/connectors/brreg-konkurs/{orgnr} Punkt-sjekk: «er dette selskapet konkurs?».",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregKonkurs",
                  "additionalProperties": false,
                  "description": "Konkursoppføring for ett organisasjonsnummer fra Brreg Enhetsregisteret (konkurs=true). `data` er en liste med nøyaktig ett kanonisk konkurs-objekt; 404 returneres hvis selskapet ikke er registrert konkurs.",
                  "required": [
                    "data",
                    "page"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "Kanoniske konkursoppføringer (for /{orgnr} alltid nøyaktig ett element).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "title": "CanonicalKonkurs",
                        "description": "Normalisert konkurs-entitet (`normalizeKonkurs`). Alle felt er nullable — Enhetsregisteret utelater det som mangler, og enkelte felt (boRef, bostyrer) er ikke lenger tilgjengelig etter migreringen.",
                        "required": [
                          "boRef",
                          "orgnr",
                          "navn",
                          "aapningsDato",
                          "behandlingstype",
                          "status",
                          "rettskrets",
                          "bostyrer",
                          "ansatteBerort",
                          "naeringskode",
                          "naeringskodeBeskrivelse",
                          "stiftelsesdato",
                          "sisteEndring"
                        ],
                        "properties": {
                          "boRef": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Bo-referanse. Alltid null etter migrering til Enhetsregisteret (ikke eksponert der).",
                            "example": null
                          },
                          "orgnr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "pattern": "^\\d{9}$",
                            "description": "Organisasjonsnummer (9 siffer).",
                            "example": "923609016"
                          },
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Selskapsnavn.",
                            "example": "EKSEMPEL AS"
                          },
                          "aapningsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Konkursåpningsdato (ISO-8601, fra `konkursdato`).",
                            "example": "2026-03-14"
                          },
                          "behandlingstype": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "enum": [
                              "KONKURSBEHANDLING",
                              null
                            ],
                            "description": "Behandlingstype. KONKURSBEHANDLING når enheten er registrert konkurs (raw.konkurs===true).",
                            "example": "KONKURSBEHANDLING"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "enum": [
                              "konkurs",
                              null
                            ],
                            "description": "Konkursstatus — \"konkurs\" når raw.konkurs===true, ellers null.",
                            "example": "konkurs"
                          },
                          "rettskrets": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Rettskrets — utledet fra forretningsadressens kommune.",
                            "example": "OSLO"
                          },
                          "bostyrer": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "title": "CanonicalBostyrer",
                            "description": "Bostyrer-informasjon. Alltid null etter migrering til Enhetsregisteret (ikke eksponert der).",
                            "required": [
                              "navn",
                              "advokatOrgnr"
                            ],
                            "properties": {
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Bostyrers navn.",
                                "example": "Ola Nordmann"
                              },
                              "advokatOrgnr": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "pattern": "^\\d{9}$",
                                "description": "Organisasjonsnummer for bostyrers advokatfirma.",
                                "example": "987654321"
                              }
                            },
                            "example": null
                          },
                          "ansatteBerort": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Antall ansatte berørt — proxy fra Enhetsregisterets `antallAnsatte`.",
                            "example": 12
                          },
                          "naeringskode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "NACE-næringskode (fra `naeringskode1.kode`).",
                            "example": "47.111"
                          },
                          "naeringskodeBeskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Tekstlig beskrivelse av næringskoden.",
                            "example": "Butikkhandel med bredt vareutvalg med hovedvekt på nærings- og nytelsesmidler"
                          },
                          "stiftelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Stiftelsesdato (ISO-8601).",
                            "example": "2010-06-01"
                          },
                          "sisteEndring": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dato for siste endring (ISO-8601). Prioriterer `sisteEndring`, faller tilbake til `konkursdato`.",
                            "example": "2026-03-14"
                          }
                        }
                      }
                    },
                    "page": {
                      "type": "object",
                      "additionalProperties": false,
                      "title": "PageMeta",
                      "description": "Pagineringsmetadata. For /{orgnr} alltid ett enkelt element.",
                      "required": [
                        "size",
                        "totalElements",
                        "totalPages",
                        "number"
                      ],
                      "properties": {
                        "size": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Antall elementer på siden.",
                          "example": 1
                        },
                        "totalElements": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Totalt antall treff.",
                          "example": 1
                        },
                        "totalPages": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Totalt antall sider.",
                          "example": 1
                        },
                        "number": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Gjeldende sideindeks (0-basert).",
                          "example": 0
                        }
                      }
                    }
                  },
                  "example": {
                    "data": [
                      {
                        "boRef": null,
                        "orgnr": "923609016",
                        "navn": "EKSEMPEL AS",
                        "aapningsDato": "2026-03-14",
                        "behandlingstype": "KONKURSBEHANDLING",
                        "status": "konkurs",
                        "rettskrets": "OSLO",
                        "bostyrer": null,
                        "ansatteBerort": 12,
                        "naeringskode": "47.111",
                        "naeringskodeBeskrivelse": "Butikkhandel med bredt vareutvalg med hovedvekt på nærings- og nytelsesmidler",
                        "stiftelsesdato": "2010-06-01",
                        "sisteEndring": "2026-03-14"
                      }
                    ],
                    "page": {
                      "size": 1,
                      "totalElements": 1,
                      "totalPages": 1,
                      "number": 0
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-konkurs/{orgnr}/bostyrer": {
      "get": {
        "tags": [
          "connector:brreg-konkurs"
        ],
        "operationId": "get_api_connectors_brreg_konkurs__orgnr__bostyrer",
        "summary": "GET /api/connectors/brreg-konkurs/{orgnr}/bostyrer Henter bostyrer for et konkursbo via Brreg Roller",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-konkurs/[orgnr]/bostyrer/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregKonkursBostyrer",
                  "additionalProperties": false,
                  "description": "Bostyrere (og eventuelle fratrådte) for et norsk konkursbo, utledet fra Brregs rolleregister. Tom liste når ingen bostyrer er registrert eller roller-oppslaget ikke ga treff.",
                  "required": [
                    "orgnr",
                    "bostyrer",
                    "source"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "description": "Organisasjonsnummer (renset, 9 siffer).",
                      "example": "912345678"
                    },
                    "bostyrer": {
                      "type": "array",
                      "description": "Én rad per registrert bostyrer.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "navn",
                          "fratraadt",
                          "inntredelsesdato",
                          "fratredelsesdato"
                        ],
                        "properties": {
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Advokat Kari Nordmann"
                          },
                          "fratraadt": {
                            "type": "boolean",
                            "description": "Om bostyreren har fratrådt vervet.",
                            "example": false
                          },
                          "inntredelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "ISO-dato for tiltredelse.",
                            "example": "2024-03-15"
                          },
                          "fratredelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "ISO-dato for fratredelse. Null hvis fortsatt aktiv."
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "brreg-roller"
                      ]
                    }
                  },
                  "example": {
                    "orgnr": "912345678",
                    "bostyrer": [
                      {
                        "navn": "Advokat Kari Nordmann",
                        "fratraadt": false,
                        "inntredelsesdato": "2024-03-15",
                        "fratredelsesdato": null
                      }
                    ],
                    "source": "brreg-roller"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-regnskap/health": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap_health",
        "summary": "GET /api/connectors/brreg-regnskap/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg-regnskap/regnskap": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap_regnskap",
        "summary": "GET /api/connectors/brreg-regnskap/regnskap",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/regnskap/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg-regnskap/regnskap/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap_regnskap__orgnr_",
        "summary": "GET /api/connectors/brreg-regnskap/regnskap/[orgnr] Henter regnskapsliste for et norsk organisasjons",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/regnskap/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorBrregRegnskap",
                  "description": "Liste over årsregnskap for ett organisasjonsnummer (tom array hvis ingen regnskap). Hvert element er ett normalisert regnskap fra Brreg Regnskapsregisteret.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Ett normalisert årsregnskap (`NormalizedRegnskap`). De fleste felt er nullable fordi Brreg utelater data som mangler; objekt-felt defaulter til `{}` når upstream ikke leverer dem.",
                    "required": [
                      "id",
                      "journalnr",
                      "regnskapstype",
                      "regnskapDokumenttype",
                      "orgnr",
                      "virksomhetNavn",
                      "organisasjonsform",
                      "periode",
                      "valuta",
                      "revisjon",
                      "egenkapitalGjeld",
                      "eiendeler",
                      "resultatregnskapResultat",
                      "financials",
                      "raw"
                    ],
                    "properties": {
                      "id": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "description": "Regnskaps-ID fra Brreg. Null hvis upstream mangler `id`.",
                        "example": 7654321
                      },
                      "journalnr": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Journalnummer for innsendingen. Null hvis ikke oppgitt.",
                        "example": "2024-12345"
                      },
                      "regnskapstype": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Regnskapstype fra Brreg, f.eks. `SELSKAP`, `KONSERN`/`KONSOLIDERT`. Null hvis ikke oppgitt.",
                        "example": "SELSKAP"
                      },
                      "regnskapDokumenttype": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Dokumenttype for regnskapet. Null hvis ikke oppgitt.",
                        "example": "ÅRSREGNSKAP"
                      },
                      "orgnr": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Organisasjonsnummer fra `virksomhet.organisasjonsnummer` (9 siffer). Null hvis upstream mangler virksomhet.",
                        "pattern": "^\\d{9}$",
                        "example": "923609016"
                      },
                      "virksomhetNavn": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Foretaksnavn fra `virksomhet.navn`. Null hvis ikke oppgitt.",
                        "example": "EQUINOR ASA"
                      },
                      "organisasjonsform": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Organisasjonsform-kode fra `virksomhet.organisasjonsform`.",
                        "example": "ASA"
                      },
                      "periode": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Regnskapsperioden (`regnskapsperiode`). Begge datoer kan være null.",
                        "required": [
                          "fraDato",
                          "tilDato"
                        ],
                        "properties": {
                          "fraDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Periodens startdato (ISO-8601). Null hvis ikke oppgitt.",
                            "example": "2023-01-01"
                          },
                          "tilDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Periodens sluttdato (ISO-8601). Null hvis ikke oppgitt.",
                            "example": "2023-12-31"
                          }
                        }
                      },
                      "valuta": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Rapporteringsvaluta (ISO 4217). Null hvis ikke oppgitt.",
                        "pattern": "^[A-Z]{3}$",
                        "example": "NOK"
                      },
                      "revisjon": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Revisjonsinformasjon fra Brreg, uendret struktur. Tomt objekt `{}` når upstream ikke leverer feltet.",
                        "example": {
                          "ikkeRevidertAarsregnskap": false
                        }
                      },
                      "egenkapitalGjeld": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Egenkapital- og gjeldsstruktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
                        "example": {
                          "sumEgenkapitalGjeld": 1000000
                        }
                      },
                      "eiendeler": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Eiendelsstruktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
                        "example": {
                          "sumEiendeler": 1000000
                        }
                      },
                      "resultatregnskapResultat": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Resultatregnskap-struktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
                        "example": {
                          "aarsresultat": 250000
                        }
                      },
                      "financials": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Utledede kanoniske nøkkeltall (`CanonicalFinancialStatement`), søkt rekursivt ut av regnskapsstrukturen. Hver verdi er null hvis tallet ikke finnes.",
                        "required": [
                          "netIncome",
                          "totalAssets",
                          "totalLiabilitiesAndEquity"
                        ],
                        "properties": {
                          "netIncome": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Årsresultat (`aarsresultat`/`ordinaertResultat`).",
                            "example": 250000
                          },
                          "totalAssets": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Sum eiendeler (`sumEiendeler`).",
                            "example": 1000000
                          },
                          "totalLiabilitiesAndEquity": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Sum egenkapital og gjeld (`sumEgenkapitalGjeld`).",
                            "example": 1000000
                          }
                        }
                      },
                      "raw": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Uendret originalstruktur fra Brreg (`RegnskapRaw`) for videre prosessering. Form varierer mellom flat og full respons.",
                        "example": {
                          "id": 7654321,
                          "regnskapstype": "SELSKAP",
                          "virksomhet": {
                            "organisasjonsnummer": "923609016",
                            "navn": "EQUINOR ASA"
                          }
                        }
                      }
                    }
                  },
                  "example": [
                    {
                      "id": 7654321,
                      "journalnr": "2024-12345",
                      "regnskapstype": "SELSKAP",
                      "regnskapDokumenttype": "ÅRSREGNSKAP",
                      "orgnr": "923609016",
                      "virksomhetNavn": "EQUINOR ASA",
                      "organisasjonsform": "ASA",
                      "periode": {
                        "fraDato": "2023-01-01",
                        "tilDato": "2023-12-31"
                      },
                      "valuta": "NOK",
                      "revisjon": {
                        "ikkeRevidertAarsregnskap": false
                      },
                      "egenkapitalGjeld": {
                        "sumEgenkapitalGjeld": 1000000
                      },
                      "eiendeler": {
                        "sumEiendeler": 1000000
                      },
                      "resultatregnskapResultat": {
                        "aarsresultat": 250000
                      },
                      "financials": {
                        "netIncome": 250000,
                        "totalAssets": 1000000,
                        "totalLiabilitiesAndEquity": 1000000
                      },
                      "raw": {
                        "id": 7654321,
                        "regnskapstype": "SELSKAP",
                        "virksomhet": {
                          "organisasjonsnummer": "923609016",
                          "navn": "EQUINOR ASA"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-regnskap/regnskap/{orgnr}/summary": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap_regnskap__orgnr__summary",
        "summary": "GET /api/connectors/brreg-regnskap/regnskap/{orgnr}/summary Nøkkeltall-sammendrag for siste regnskap",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/regnskap/[orgnr]/summary/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRegnskapSummary",
                  "additionalProperties": false,
                  "description": "Nøkkeltall-sammendrag for siste årsregnskap for ett norsk orgnr, med utledede ratioer (egenkapitalandel, gjeldsgrad, driftsmargin) og dekningsmetadata.",
                  "required": [
                    "orgnr",
                    "virksomhetNavn",
                    "år",
                    "driftsinntekter",
                    "aarsresultat",
                    "sumEgenkapital",
                    "sumGjeld",
                    "sumEiendeler",
                    "egenkapitalProsent",
                    "gjeldsgrad",
                    "driftsmarginPct",
                    "source",
                    "coverage"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "description": "Organisasjonsnummer (tom streng hvis kilden manglet det).",
                      "example": "923609016"
                    },
                    "virksomhetNavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Beriket fra Brreg Enhet (legalName); null hvis begge kilder mangler.",
                      "example": "EQUINOR ASA"
                    },
                    "år": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 2024
                    },
                    "driftsinntekter": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 1200000000
                    },
                    "aarsresultat": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 95000000
                    },
                    "sumEgenkapital": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 500000000
                    },
                    "sumGjeld": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 700000000
                    },
                    "sumEiendeler": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 1200000000
                    },
                    "egenkapitalProsent": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Egenkapitalandel i prosent.",
                      "example": 41.7
                    },
                    "gjeldsgrad": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 1.4
                    },
                    "driftsmarginPct": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 7.9
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "brreg-regnskap"
                      ]
                    },
                    "coverage": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Metadata om hvilke regnskapsår som er tilgjengelige.",
                      "required": [
                        "years",
                        "yearsAvailable",
                        "multiYear",
                        "source",
                        "note"
                      ],
                      "properties": {
                        "years": {
                          "type": "array",
                          "items": {
                            "type": "integer"
                          },
                          "description": "Distinkte år, nyeste først.",
                          "example": [
                            2024,
                            2023
                          ]
                        },
                        "yearsAvailable": {
                          "type": "integer",
                          "example": 2
                        },
                        "multiYear": {
                          "type": "boolean",
                          "example": true
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "brreg-latest-only",
                            "brreg-regnskap"
                          ]
                        },
                        "note": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "virksomhetNavn": "EQUINOR ASA",
                    "år": 2024,
                    "driftsinntekter": 1200000000,
                    "aarsresultat": 95000000,
                    "sumEgenkapital": 500000000,
                    "sumGjeld": 700000000,
                    "sumEiendeler": 1200000000,
                    "egenkapitalProsent": 41.7,
                    "gjeldsgrad": 1.4,
                    "driftsmarginPct": 7.9,
                    "source": "brreg-regnskap",
                    "coverage": {
                      "years": [
                        2024,
                        2023
                      ],
                      "yearsAvailable": 2,
                      "multiYear": true,
                      "source": "brreg-regnskap",
                      "note": "2 regnskapsår tilgjengelig."
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-regnskap/regnskap/{orgnr}/trend": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap_regnskap__orgnr__trend",
        "summary": "GET /api/connectors/brreg-regnskap/regnskap/{orgnr}/trend Trendanalyse for de siste N regnskapsårene",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/regnskap/[orgnr]/trend/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRegnskapTrend",
                  "additionalProperties": false,
                  "description": "Flerårs trend for ett norsk orgnr: parallelle tidsserier for driftsinntekter, årsresultat og egenkapital (én verdi per `years`-indeks, nyeste først).",
                  "required": [
                    "orgnr",
                    "years",
                    "driftsinntekter",
                    "aarsresultat",
                    "egenkapital",
                    "source",
                    "coverage"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "example": "923609016"
                    },
                    "years": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      },
                      "description": "Visnings-år, nyeste først.",
                      "example": [
                        2024,
                        2023,
                        2022
                      ]
                    },
                    "driftsinntekter": {
                      "type": "array",
                      "items": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "description": "Parallell til `years` (null der året mangler tall).",
                      "example": [
                        1200000000,
                        1100000000,
                        1000000000
                      ]
                    },
                    "aarsresultat": {
                      "type": "array",
                      "items": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "example": [
                        95000000,
                        80000000,
                        60000000
                      ]
                    },
                    "egenkapital": {
                      "type": "array",
                      "items": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "description": "Fra summary `sumEgenkapital`, parallell til `years`.",
                      "example": [
                        500000000,
                        460000000,
                        420000000
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "brreg-regnskap"
                      ]
                    },
                    "coverage": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "years",
                        "yearsAvailable",
                        "multiYear",
                        "source",
                        "note"
                      ],
                      "properties": {
                        "years": {
                          "type": "array",
                          "items": {
                            "type": "integer"
                          },
                          "example": [
                            2024,
                            2023,
                            2022
                          ]
                        },
                        "yearsAvailable": {
                          "type": "integer",
                          "example": 3
                        },
                        "multiYear": {
                          "type": "boolean",
                          "example": true
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "brreg-latest-only",
                            "brreg-regnskap"
                          ]
                        },
                        "note": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "years": [
                      2024,
                      2023,
                      2022
                    ],
                    "driftsinntekter": [
                      1200000000,
                      1100000000,
                      1000000000
                    ],
                    "aarsresultat": [
                      95000000,
                      80000000,
                      60000000
                    ],
                    "egenkapital": [
                      500000000,
                      460000000,
                      420000000
                    ],
                    "source": "brreg-regnskap",
                    "coverage": {
                      "years": [
                        2024,
                        2023,
                        2022
                      ],
                      "yearsAvailable": 3,
                      "multiYear": true,
                      "source": "brreg-regnskap",
                      "note": "3 regnskapsår tilgjengelig."
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-regnskap/regnskap/{orgnr}/{id}": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap_regnskap__orgnr___id_",
        "summary": "GET /api/connectors/brreg-regnskap/regnskap/[orgnr]/[id] Henter et spesifikt regnskapsdokument for o",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/regnskap/[orgnr]/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRegnskapEntry",
                  "additionalProperties": false,
                  "description": "Ett normalisert årsregnskap fra Brreg Regnskapsregisteret, slått opp på orgnr + regnskaps-id. Utledede nøkkeltall i `financials`; rå upstream-seksjoner bevart.",
                  "required": [
                    "id",
                    "journalnr",
                    "regnskapstype",
                    "regnskapDokumenttype",
                    "orgnr",
                    "virksomhetNavn",
                    "organisasjonsform",
                    "periode",
                    "valuta",
                    "revisjon",
                    "egenkapitalGjeld",
                    "eiendeler",
                    "resultatregnskapResultat",
                    "financials",
                    "raw"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 123456
                    },
                    "journalnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2024-000123"
                    },
                    "regnskapstype": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "SELSKAP"
                    },
                    "regnskapDokumenttype": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "ÅRSREGNSKAP"
                    },
                    "orgnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "923609016"
                    },
                    "virksomhetNavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "EQUINOR ASA"
                    },
                    "organisasjonsform": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "ASA"
                    },
                    "periode": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "fraDato",
                        "tilDato"
                      ],
                      "properties": {
                        "fraDato": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "2024-01-01"
                        },
                        "tilDato": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "2024-12-31"
                        }
                      }
                    },
                    "valuta": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "NOK"
                    },
                    "revisjon": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-seksjon (revisjon), videresendt verbatim."
                    },
                    "egenkapitalGjeld": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-seksjon (egenkapital + gjeld)."
                    },
                    "eiendeler": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-seksjon (eiendeler)."
                    },
                    "resultatregnskapResultat": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-seksjon (resultatregnskap)."
                    },
                    "financials": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Utledede kanoniske nøkkeltall.",
                      "required": [
                        "netIncome",
                        "totalAssets",
                        "totalLiabilitiesAndEquity"
                      ],
                      "properties": {
                        "netIncome": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 95000000
                        },
                        "totalAssets": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 1200000000
                        },
                        "totalLiabilitiesAndEquity": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 1200000000
                        }
                      }
                    },
                    "raw": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Hele det uendrede upstream-objektet fra Brreg."
                    }
                  },
                  "example": {
                    "id": 123456,
                    "journalnr": "2024-000123",
                    "regnskapstype": "SELSKAP",
                    "regnskapDokumenttype": "ÅRSREGNSKAP",
                    "orgnr": "923609016",
                    "virksomhetNavn": "EQUINOR ASA",
                    "organisasjonsform": "ASA",
                    "periode": {
                      "fraDato": "2024-01-01",
                      "tilDato": "2024-12-31"
                    },
                    "valuta": "NOK",
                    "revisjon": {
                      "ikkeRevidertAarsregnskap": false
                    },
                    "egenkapitalGjeld": {},
                    "eiendeler": {},
                    "resultatregnskapResultat": {},
                    "financials": {
                      "netIncome": 95000000,
                      "totalAssets": 1200000000,
                      "totalLiabilitiesAndEquity": 1200000000
                    },
                    "raw": {
                      "id": 123456
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-regnskap/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg-regnskap"
        ],
        "operationId": "get_api_connectors_brreg_regnskap__orgnr_",
        "summary": "GET /api/connectors/brreg-regnskap/[orgnr] Bekvemmeligheits-alias for /api/connectors/brreg-regnskap",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-regnskap/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorBrregRegnskap",
                  "description": "Liste over årsregnskap for ett organisasjonsnummer (tom array hvis ingen regnskap). Hvert element er ett normalisert regnskap fra Brreg Regnskapsregisteret.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Ett normalisert årsregnskap (`NormalizedRegnskap`). De fleste felt er nullable fordi Brreg utelater data som mangler; objekt-felt defaulter til `{}` når upstream ikke leverer dem.",
                    "required": [
                      "id",
                      "journalnr",
                      "regnskapstype",
                      "regnskapDokumenttype",
                      "orgnr",
                      "virksomhetNavn",
                      "organisasjonsform",
                      "periode",
                      "valuta",
                      "revisjon",
                      "egenkapitalGjeld",
                      "eiendeler",
                      "resultatregnskapResultat",
                      "financials",
                      "raw"
                    ],
                    "properties": {
                      "id": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "description": "Regnskaps-ID fra Brreg. Null hvis upstream mangler `id`.",
                        "example": 7654321
                      },
                      "journalnr": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Journalnummer for innsendingen. Null hvis ikke oppgitt.",
                        "example": "2024-12345"
                      },
                      "regnskapstype": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Regnskapstype fra Brreg, f.eks. `SELSKAP`, `KONSERN`/`KONSOLIDERT`. Null hvis ikke oppgitt.",
                        "example": "SELSKAP"
                      },
                      "regnskapDokumenttype": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Dokumenttype for regnskapet. Null hvis ikke oppgitt.",
                        "example": "ÅRSREGNSKAP"
                      },
                      "orgnr": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Organisasjonsnummer fra `virksomhet.organisasjonsnummer` (9 siffer). Null hvis upstream mangler virksomhet.",
                        "pattern": "^\\d{9}$",
                        "example": "923609016"
                      },
                      "virksomhetNavn": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Foretaksnavn fra `virksomhet.navn`. Null hvis ikke oppgitt.",
                        "example": "EQUINOR ASA"
                      },
                      "organisasjonsform": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Organisasjonsform-kode fra `virksomhet.organisasjonsform`.",
                        "example": "ASA"
                      },
                      "periode": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Regnskapsperioden (`regnskapsperiode`). Begge datoer kan være null.",
                        "required": [
                          "fraDato",
                          "tilDato"
                        ],
                        "properties": {
                          "fraDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Periodens startdato (ISO-8601). Null hvis ikke oppgitt.",
                            "example": "2023-01-01"
                          },
                          "tilDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Periodens sluttdato (ISO-8601). Null hvis ikke oppgitt.",
                            "example": "2023-12-31"
                          }
                        }
                      },
                      "valuta": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Rapporteringsvaluta (ISO 4217). Null hvis ikke oppgitt.",
                        "pattern": "^[A-Z]{3}$",
                        "example": "NOK"
                      },
                      "revisjon": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Revisjonsinformasjon fra Brreg, uendret struktur. Tomt objekt `{}` når upstream ikke leverer feltet.",
                        "example": {
                          "ikkeRevidertAarsregnskap": false
                        }
                      },
                      "egenkapitalGjeld": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Egenkapital- og gjeldsstruktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
                        "example": {
                          "sumEgenkapitalGjeld": 1000000
                        }
                      },
                      "eiendeler": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Eiendelsstruktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
                        "example": {
                          "sumEiendeler": 1000000
                        }
                      },
                      "resultatregnskapResultat": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Resultatregnskap-struktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
                        "example": {
                          "aarsresultat": 250000
                        }
                      },
                      "financials": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Utledede kanoniske nøkkeltall (`CanonicalFinancialStatement`), søkt rekursivt ut av regnskapsstrukturen. Hver verdi er null hvis tallet ikke finnes.",
                        "required": [
                          "netIncome",
                          "totalAssets",
                          "totalLiabilitiesAndEquity"
                        ],
                        "properties": {
                          "netIncome": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Årsresultat (`aarsresultat`/`ordinaertResultat`).",
                            "example": 250000
                          },
                          "totalAssets": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Sum eiendeler (`sumEiendeler`).",
                            "example": 1000000
                          },
                          "totalLiabilitiesAndEquity": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Sum egenkapital og gjeld (`sumEgenkapitalGjeld`).",
                            "example": 1000000
                          }
                        }
                      },
                      "raw": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Uendret originalstruktur fra Brreg (`RegnskapRaw`) for videre prosessering. Form varierer mellom flat og full respons.",
                        "example": {
                          "id": 7654321,
                          "regnskapstype": "SELSKAP",
                          "virksomhet": {
                            "organisasjonsnummer": "923609016",
                            "navn": "EQUINOR ASA"
                          }
                        }
                      }
                    }
                  },
                  "example": [
                    {
                      "id": 7654321,
                      "journalnr": "2024-12345",
                      "regnskapstype": "SELSKAP",
                      "regnskapDokumenttype": "ÅRSREGNSKAP",
                      "orgnr": "923609016",
                      "virksomhetNavn": "EQUINOR ASA",
                      "organisasjonsform": "ASA",
                      "periode": {
                        "fraDato": "2023-01-01",
                        "tilDato": "2023-12-31"
                      },
                      "valuta": "NOK",
                      "revisjon": {
                        "ikkeRevidertAarsregnskap": false
                      },
                      "egenkapitalGjeld": {
                        "sumEgenkapitalGjeld": 1000000
                      },
                      "eiendeler": {
                        "sumEiendeler": 1000000
                      },
                      "resultatregnskapResultat": {
                        "aarsresultat": 250000
                      },
                      "financials": {
                        "netIncome": 250000,
                        "totalAssets": 1000000,
                        "totalLiabilitiesAndEquity": 1000000
                      },
                      "raw": {
                        "id": 7654321,
                        "regnskapstype": "SELSKAP",
                        "virksomhet": {
                          "organisasjonsnummer": "923609016",
                          "navn": "EQUINOR ASA"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-roller/health": {
      "get": {
        "tags": [
          "connector:brreg-roller"
        ],
        "operationId": "get_api_connectors_brreg_roller_health",
        "summary": "GET /api/connectors/brreg-roller/health Default (raskt): liveness-check uten upstream-kall (#1402).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-roller/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg-roller/interlocks": {
      "get": {
        "tags": [
          "connector:brreg-roller"
        ],
        "operationId": "get_api_connectors_brreg_roller_interlocks",
        "summary": "GET /api/connectors/brreg-roller/interlocks?orgnr={orgnr} Returnerer styre-interlocks — andre selska",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-roller/interlocks/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer)",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/brreg-roller/network": {
      "get": {
        "tags": [
          "connector:brreg-roller"
        ],
        "operationId": "get_api_connectors_brreg_roller_network",
        "summary": "GET /api/connectors/brreg-roller/network?orgnr={orgnr}&depth=2 Graf-traversal: finn alle selskaper o",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-roller/network/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "depth",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "2"
            },
            "description": "Traverserings-dybde"
          },
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer) — rot for traversering",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/brreg-roller/search": {
      "get": {
        "tags": [
          "connector:brreg-roller"
        ],
        "operationId": "get_api_connectors_brreg_roller_search",
        "summary": "GET /api/connectors/brreg-roller/search?navn={navn}[&page=0][&size=20] Søk etter alle styreverv og r",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-roller/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "navn",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Personens fulle navn eller deler av det (400 uten)",
            "example": "Ola Nordmann"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            },
            "description": "Sidenummer (0-indeksert)"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Antall treff per side"
          }
        ]
      }
    },
    "/api/connectors/brreg-roller/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg-roller"
        ],
        "operationId": "get_api_connectors_brreg_roller__orgnr_",
        "summary": "GET /api/connectors/brreg-roller/[orgnr] Henter normaliserte roller for norsk organisasjonsnummer fr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-roller/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRoller",
                  "additionalProperties": false,
                  "description": "Rollegrupper (styre, daglig leder, revisor m.fl.) for én enhet, med\nrolleinnehavere som enten er personer eller andre enheter.\n",
                  "required": [
                    "organisasjonsnummer",
                    "rollegrupper",
                    "harAutorisertData"
                  ],
                  "properties": {
                    "organisasjonsnummer": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummeret rollene gjelder for.",
                      "example": "974760673"
                    },
                    "harAutorisertData": {
                      "type": "boolean",
                      "description": "`true` hvis svaret inkluderer data fra det autoriserte rolle-API-et\n(krever Maskinporten); ellers er det den åpne delmengden.\n",
                      "example": false
                    },
                    "rollegrupper": {
                      "type": "array",
                      "description": "Rollegrupper gruppert etter type (f.eks. styre, kontaktperson).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "typeKode",
                          "typeBeskrivelse",
                          "sisteEndringsDato",
                          "roller"
                        ],
                        "properties": {
                          "typeKode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Kode for rollegruppetypen.",
                            "example": "STYR"
                          },
                          "typeBeskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Lesbar beskrivelse av rollegruppetypen.",
                            "example": "Styre"
                          },
                          "sisteEndringsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Siste endringsdato for gruppen (ISO-8601 `YYYY-MM-DD`).",
                            "example": "2024-03-12"
                          },
                          "roller": {
                            "type": "array",
                            "description": "Rolleinnehavere i gruppen.",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "person",
                                "enhet",
                                "fratraadt",
                                "rekkefolge",
                                "inntredelsesdato",
                                "fratredelsesdato"
                              ],
                              "properties": {
                                "person": {
                                  "description": "Personen som innehar rollen, eller `null` hvis rollen innehas av en enhet.",
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "navn",
                                        "fodselsdato",
                                        "fodselsnummer",
                                        "erDoed"
                                      ],
                                      "properties": {
                                        "navn": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "example": "Ola Nordmann"
                                        },
                                        "fodselsdato": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Fødselsdato (ISO-8601 `YYYY-MM-DD`) når tilgjengelig.",
                                          "example": "1970-01-01"
                                        },
                                        "fodselsnummer": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Fødselsnummer — kun fra autorisert API, ellers `null`."
                                        },
                                        "erDoed": {
                                          "type": "boolean",
                                          "example": false
                                        }
                                      }
                                    }
                                  ]
                                },
                                "enhet": {
                                  "description": "Enheten som innehar rollen, eller `null` hvis rollen innehas av en person.",
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "organisasjonsnummer",
                                        "navn"
                                      ],
                                      "properties": {
                                        "organisasjonsnummer": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "pattern": "^\\d{9}$",
                                          "example": "912345678"
                                        },
                                        "navn": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "example": "REVISJON AS"
                                        }
                                      }
                                    }
                                  ]
                                },
                                "fratraadt": {
                                  "type": "boolean",
                                  "description": "`true` hvis rolleinnehaveren har fratrådt.",
                                  "example": false
                                },
                                "rekkefolge": {
                                  "type": [
                                    "integer",
                                    "null"
                                  ],
                                  "description": "Rekkefølge innen rollegruppen.",
                                  "example": 1
                                },
                                "inntredelsesdato": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Dato for tiltreden (ISO-8601 `YYYY-MM-DD`).",
                                  "example": "2024-03-12"
                                },
                                "fratredelsesdato": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Dato for fratreden (ISO-8601 `YYYY-MM-DD`), `null` hvis aktiv.",
                                  "example": null
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "organisasjonsnummer": "974760673",
                    "harAutorisertData": false,
                    "rollegrupper": [
                      {
                        "typeKode": "STYR",
                        "typeBeskrivelse": "Styre",
                        "sisteEndringsDato": "2024-03-12",
                        "roller": [
                          {
                            "person": {
                              "navn": "Ola Nordmann",
                              "fodselsdato": "1970-01-01",
                              "fodselsnummer": null,
                              "erDoed": false
                            },
                            "enhet": null,
                            "fratraadt": false,
                            "rekkefolge": 1,
                            "inntredelsesdato": "2024-03-12",
                            "fratredelsesdato": null
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg-roller/{orgnr}/history": {
      "get": {
        "tags": [
          "connector:brreg-roller"
        ],
        "operationId": "get_api_connectors_brreg_roller__orgnr__history",
        "summary": "GET /api/connectors/brreg-roller/[orgnr]/history Returnerer historiske (fratrådte) roller for norsk ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg-roller/[orgnr]/history/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRollerHistory",
                  "additionalProperties": false,
                  "description": "Historikk over roller (styre, daglig leder m.m.) for en norsk enhet, utledet fra Brregs rolleregister. Én rad per rolleperiode med inn-/uttredelsesdato.",
                  "required": [
                    "organisasjonsnummer",
                    "historikk",
                    "count",
                    "source",
                    "note"
                  ],
                  "properties": {
                    "organisasjonsnummer": {
                      "type": "string",
                      "example": "923609016"
                    },
                    "historikk": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "rolleType",
                          "person",
                          "enhet",
                          "inntredelsesdato",
                          "fratredelsesdato"
                        ],
                        "properties": {
                          "rolleType": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "kode",
                              "beskrivelse"
                            ],
                            "properties": {
                              "kode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "LEDE"
                              },
                              "beskrivelse": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Styrets leder"
                              }
                            }
                          },
                          "person": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "description": "Satt når rolleinnehaveren er en person; ellers null.",
                            "properties": {
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Jon Erik Reinhardsen"
                              },
                              "fodselsdato": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "1956-01-01"
                              }
                            }
                          },
                          "enhet": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "description": "Satt når rolleinnehaveren er en enhet; ellers null.",
                            "properties": {
                              "organisasjonsnummer": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          },
                          "inntredelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2015-05-01"
                          },
                          "fratredelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "brreg"
                      ]
                    },
                    "note": {
                      "type": "string",
                      "description": "Fast veiledningstekst om datakilden."
                    }
                  },
                  "example": {
                    "organisasjonsnummer": "923609016",
                    "historikk": [
                      {
                        "rolleType": {
                          "kode": "LEDE",
                          "beskrivelse": "Styrets leder"
                        },
                        "person": {
                          "navn": "Jon Erik Reinhardsen",
                          "fodselsdato": "1956-01-01"
                        },
                        "enhet": null,
                        "inntredelsesdato": "2015-05-01",
                        "fratredelsesdato": null
                      }
                    ],
                    "count": 1,
                    "source": "brreg",
                    "note": "Rollehistorikk utledet fra Brregs rolleregister."
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg/enheter": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_enheter",
        "summary": "GET /api/connectors/brreg/enheter?navn=...&organisasjonsnummer=...&...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/enheter/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "kommunenummer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Filtrer på kommunenummer",
            "example": "0301"
          },
          {
            "name": "navn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-navnesøk (minst ett selektivt filter kreves)",
            "example": "Equinor"
          },
          {
            "name": "organisasjonsform",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på org.form (AS, ENK, …)",
            "example": "AS"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Antall treff per side"
          }
        ]
      }
    },
    "/api/connectors/brreg/enheter/batch": {
      "post": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "post_api_connectors_brreg_enheter_batch",
        "summary": "POST /api/connectors/brreg/enheter/batch Batch-oppslag mot Brreg Enhetsregisteret.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/enheter/batch/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg/enheter/{orgnr}/underenheter": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_enheter__orgnr__underenheter",
        "summary": "GET /api/connectors/brreg/enheter/{orgnr}/underenheter Henter virksomheter (driftssteder/underenhete",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/enheter/[orgnr]/underenheter/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregEnheterUnderenheter",
                  "additionalProperties": false,
                  "description": "Underenheter (bedrifter/virksomheter) knyttet til en norsk hovedenhet, fra Brreg Enhetsregisteret. Paginert liste med normaliserte underenheter.",
                  "required": [
                    "orgnr",
                    "underenheter",
                    "totalElements",
                    "pageNumber",
                    "pageSize"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "description": "Hovedenhetens organisasjonsnummer.",
                      "example": "923609016"
                    },
                    "underenheter": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "orgnr",
                          "parentOrgnr",
                          "navn",
                          "status",
                          "source"
                        ],
                        "properties": {
                          "orgnr": {
                            "type": "string",
                            "example": "990888213"
                          },
                          "parentOrgnr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "923609016"
                          },
                          "navn": {
                            "type": "string",
                            "example": "EQUINOR ASA AVD FORNEBU"
                          },
                          "status": {
                            "type": "string",
                            "example": "aktiv"
                          },
                          "deletedDate": {
                            "type": "string",
                            "description": "ISO-dato. Utelates for aktive underenheter."
                          },
                          "organizationForm": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "code",
                              "description"
                            ],
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "BEDR"
                              },
                              "description": {
                                "type": "string",
                                "example": "Bedrift"
                              }
                            }
                          },
                          "industryCode": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "code",
                              "description"
                            ],
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "06.100"
                              },
                              "description": {
                                "type": "string",
                                "example": "Utvinning av råolje"
                              }
                            }
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Adresse — alle underfelt er valgfrie.",
                            "properties": {
                              "street": {
                                "type": "string"
                              },
                              "postalCode": {
                                "type": "string"
                              },
                              "city": {
                                "type": "string"
                              },
                              "municipality": {
                                "type": "string"
                              },
                              "municipalityCode": {
                                "type": "string"
                              },
                              "country": {
                                "type": "string"
                              }
                            }
                          },
                          "employeeCount": {
                            "type": "integer",
                            "example": 120
                          },
                          "source": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "system",
                              "fetchedAt"
                            ],
                            "properties": {
                              "system": {
                                "type": "string",
                                "enum": [
                                  "brreg"
                                ]
                              },
                              "fetchedAt": {
                                "type": "string",
                                "format": "date-time",
                                "description": "Serialisert fra JS Date → ISO-8601.",
                                "example": "2026-07-03T09:15:00.000Z"
                              }
                            }
                          }
                        }
                      }
                    },
                    "totalElements": {
                      "type": "integer",
                      "example": 45
                    },
                    "pageNumber": {
                      "type": "integer",
                      "example": 0
                    },
                    "pageSize": {
                      "type": "integer",
                      "example": 20
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "underenheter": [
                      {
                        "orgnr": "990888213",
                        "parentOrgnr": "923609016",
                        "navn": "EQUINOR ASA AVD FORNEBU",
                        "status": "aktiv",
                        "organizationForm": {
                          "code": "BEDR",
                          "description": "Bedrift"
                        },
                        "industryCode": {
                          "code": "06.100",
                          "description": "Utvinning av råolje"
                        },
                        "address": {
                          "postalCode": "1364",
                          "city": "FORNEBU",
                          "municipality": "BÆRUM",
                          "country": "Norge"
                        },
                        "employeeCount": 120,
                        "source": {
                          "system": "brreg",
                          "fetchedAt": "2026-07-03T09:15:00.000Z"
                        }
                      }
                    ],
                    "totalElements": 45,
                    "pageNumber": 0,
                    "pageSize": 20
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg/health": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_health",
        "summary": "GET /api/connectors/brreg/health Default (raskt): statisk metadata uten upstream-roundtrip.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg/profil/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_profil__orgnr_",
        "summary": "GET /api/connectors/brreg/profil/{orgnr} Aggregert 360°-selskapsprofil: - Basisinfo fra Brønnøysundr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/profil/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregProfil",
                  "additionalProperties": false,
                  "description": "Aggregert selskapsprofil fra Brønnøysundregistrene: basisinfo (enhet), styre/ledelse (roller) og siste regnskaps-nøkkeltall. Partiell suksess er OK — enkeltkilder kan være null med detaljer i `_sources`.",
                  "required": [
                    "orgnr",
                    "enhet",
                    "roller",
                    "sisteRegnskap",
                    "_sources",
                    "_generatedAt"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummeret profilen ble slått opp på.",
                      "example": "923609016"
                    },
                    "enhet": {
                      "description": "Normalisert Brreg-basisinfo (NormalizedBrregEnhet). Null hvis Brreg-kilden feilet (ikke ved not_found — da returnerer ruten 404).",
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "companyKey",
                            "country",
                            "identifiers",
                            "legalName",
                            "status",
                            "updatedAt",
                            "source"
                          ],
                          "properties": {
                            "companyKey": {
                              "type": "string",
                              "description": "Kanonisk selskapsnøkkel (land + orgnr).",
                              "example": "NO-923609016"
                            },
                            "country": {
                              "type": "string",
                              "enum": [
                                "NO"
                              ],
                              "example": "NO"
                            },
                            "identifiers": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "country",
                                "orgnr"
                              ],
                              "properties": {
                                "country": {
                                  "type": "string",
                                  "enum": [
                                    "NO"
                                  ],
                                  "example": "NO"
                                },
                                "orgnr": {
                                  "type": "string",
                                  "pattern": "^\\d{9}$",
                                  "example": "923609016"
                                }
                              }
                            },
                            "legalName": {
                              "type": "string",
                              "description": "Registrert foretaksnavn.",
                              "example": "EQUINOR ASA"
                            },
                            "status": {
                              "type": "string",
                              "description": "Utledet status (f.eks. aktiv, konkurs, avviklet).",
                              "example": "aktiv"
                            },
                            "organizationForm": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "code",
                                "description"
                              ],
                              "description": "Organisasjonsform. Utelatt hvis ukjent.",
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "example": "ASA"
                                },
                                "description": {
                                  "type": "string",
                                  "example": "Allmennaksjeselskap"
                                }
                              }
                            },
                            "industryCode": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "code",
                                "description"
                              ],
                              "description": "Næringskode (NACE). Utelatt hvis ukjent.",
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "example": "06.100"
                                },
                                "description": {
                                  "type": "string",
                                  "example": "Utvinning av råolje"
                                }
                              }
                            },
                            "address": {
                              "type": "object",
                              "additionalProperties": false,
                              "description": "Forretningsadresse. Felt utelates når de mangler.",
                              "properties": {
                                "street": {
                                  "type": "string",
                                  "example": "Forusbeen 50"
                                },
                                "postalCode": {
                                  "type": "string",
                                  "example": "4035"
                                },
                                "city": {
                                  "type": "string",
                                  "example": "STAVANGER"
                                },
                                "municipality": {
                                  "type": "string",
                                  "example": "STAVANGER"
                                },
                                "municipalityCode": {
                                  "type": "string",
                                  "example": "1103"
                                },
                                "country": {
                                  "type": "string",
                                  "example": "Norge"
                                }
                              }
                            },
                            "foundedDate": {
                              "type": "string",
                              "description": "Stiftelsesdato (ISO-8601). Utelatt hvis ukjent.",
                              "example": "1972-07-14"
                            },
                            "registrationDate": {
                              "type": "string",
                              "description": "Registreringsdato i Brreg (ISO-8601). Utelatt hvis ukjent.",
                              "example": "1995-08-09"
                            },
                            "employeeCount": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Antall ansatte. Utelatt hvis ukjent.",
                              "example": 21000
                            },
                            "updatedAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Tidspunkt enheten sist ble oppdatert (ISO-8601, serialisert fra Date).",
                              "example": "2026-06-20T09:00:00.000Z"
                            },
                            "source": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "system",
                                "fetchedAt"
                              ],
                              "description": "Proveniens (#74 explainability).",
                              "properties": {
                                "system": {
                                  "type": "string",
                                  "enum": [
                                    "brreg"
                                  ],
                                  "example": "brreg"
                                },
                                "fetchedAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Henttidspunkt (ISO-8601, serialisert fra Date).",
                                  "example": "2026-06-24T12:00:00.000Z"
                                }
                              }
                            }
                          }
                        }
                      ]
                    },
                    "roller": {
                      "description": "Normaliserte rollegrupper / styre & ledelse (NormalizedBrregRoller). Null hvis roller-kilden feilet eller ga not_found.",
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "organisasjonsnummer",
                            "rollegrupper",
                            "harAutorisertData"
                          ],
                          "properties": {
                            "organisasjonsnummer": {
                              "type": "string",
                              "pattern": "^\\d{9}$",
                              "example": "923609016"
                            },
                            "harAutorisertData": {
                              "type": "boolean",
                              "description": "Om autorisert (full) rolledata ble brukt.",
                              "example": false
                            },
                            "rollegrupper": {
                              "type": "array",
                              "description": "Rollegrupper (f.eks. styre, daglig leder). Tom ved ingen treff.",
                              "items": {
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                  "typeKode",
                                  "typeBeskrivelse",
                                  "sisteEndringsDato",
                                  "roller"
                                ],
                                "properties": {
                                  "typeKode": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "Rollegruppe-kode.",
                                    "example": "STYR"
                                  },
                                  "typeBeskrivelse": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "example": "Styre"
                                  },
                                  "sisteEndringsDato": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "Dato for siste endring i gruppen (ISO-dato).",
                                    "example": "2025-04-30"
                                  },
                                  "roller": {
                                    "type": "array",
                                    "description": "Rolleinnehavere i gruppen.",
                                    "items": {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "person",
                                        "enhet",
                                        "fratraadt",
                                        "rekkefolge",
                                        "inntredelsesdato",
                                        "fratredelsesdato"
                                      ],
                                      "properties": {
                                        "person": {
                                          "description": "Personinnehaver. Null hvis innehaver er en enhet.",
                                          "oneOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "object",
                                              "additionalProperties": false,
                                              "required": [
                                                "navn",
                                                "fodselsdato",
                                                "fodselsnummer",
                                                "erDoed"
                                              ],
                                              "properties": {
                                                "navn": {
                                                  "type": [
                                                    "string",
                                                    "null"
                                                  ],
                                                  "example": "Ola Nordmann"
                                                },
                                                "fodselsdato": {
                                                  "type": [
                                                    "string",
                                                    "null"
                                                  ],
                                                  "description": "Fødselsdato (ISO-dato) hvis tilgjengelig.",
                                                  "example": "1965-03-12"
                                                },
                                                "fodselsnummer": {
                                                  "type": [
                                                    "string",
                                                    "null"
                                                  ],
                                                  "description": "Fødselsnummer — kun ved autorisert data, ellers null.",
                                                  "example": null
                                                },
                                                "erDoed": {
                                                  "type": "boolean",
                                                  "example": false
                                                }
                                              }
                                            }
                                          ]
                                        },
                                        "enhet": {
                                          "description": "Enhetsinnehaver. Null hvis innehaver er en person.",
                                          "oneOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "object",
                                              "additionalProperties": false,
                                              "required": [
                                                "organisasjonsnummer",
                                                "navn"
                                              ],
                                              "properties": {
                                                "organisasjonsnummer": {
                                                  "type": [
                                                    "string",
                                                    "null"
                                                  ],
                                                  "example": "987654321"
                                                },
                                                "navn": {
                                                  "type": [
                                                    "string",
                                                    "null"
                                                  ],
                                                  "example": "EKSEMPEL HOLDING AS"
                                                }
                                              }
                                            }
                                          ]
                                        },
                                        "fratraadt": {
                                          "type": "boolean",
                                          "description": "Om innehaveren har fratrådt rollen.",
                                          "example": false
                                        },
                                        "rekkefolge": {
                                          "type": [
                                            "integer",
                                            "null"
                                          ],
                                          "description": "Sorteringsrekkefølge innen gruppen.",
                                          "example": 1
                                        },
                                        "inntredelsesdato": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Dato for tiltreden av rollen (ISO-dato).",
                                          "example": "2020-05-12"
                                        },
                                        "fratredelsesdato": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Dato for fratreden (ISO-dato). Null hvis aktiv.",
                                          "example": null
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      ]
                    },
                    "sisteRegnskap": {
                      "description": "Nøkkeltall fra siste tilgjengelige regnskapsår (RegnskapSummary). Null hvis regnskaps-kilden feilet eller selskapet ikke har regnskap.",
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "orgnr",
                            "virksomhetNavn",
                            "år",
                            "driftsinntekter",
                            "aarsresultat",
                            "sumEgenkapital",
                            "sumGjeld",
                            "sumEiendeler",
                            "egenkapitalProsent",
                            "gjeldsgrad",
                            "driftsmarginPct"
                          ],
                          "properties": {
                            "orgnr": {
                              "type": "string",
                              "pattern": "^\\d{9}$",
                              "example": "923609016"
                            },
                            "virksomhetNavn": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "EQUINOR ASA"
                            },
                            "år": {
                              "type": [
                                "integer",
                                "null"
                              ],
                              "description": "Regnskapsår (fra tilDato eller fraDato).",
                              "example": 2024
                            },
                            "driftsinntekter": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "description": "Driftsinntekter (revenue), i hele kroner.",
                              "example": 1234567000
                            },
                            "aarsresultat": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "description": "Årsresultat (net income).",
                              "example": 98765000
                            },
                            "sumEgenkapital": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 500000000
                            },
                            "sumGjeld": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 300000000
                            },
                            "sumEiendeler": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 800000000
                            },
                            "egenkapitalProsent": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "description": "sumEgenkapital / sumEiendeler. Null hvis ikke beregningsbar.",
                              "example": 62.5
                            },
                            "gjeldsgrad": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "description": "sumGjeld / sumEgenkapital. Null hvis ikke beregningsbar.",
                              "example": 0.6
                            },
                            "driftsmarginPct": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "description": "aarsresultat / driftsinntekter × 100. Null hvis ikke beregningsbar.",
                              "example": 8
                            }
                          }
                        }
                      ]
                    },
                    "_sources": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "brreg",
                        "roller",
                        "regnskap"
                      ],
                      "description": "Per-kilde proveniens og status (#74 explainability).",
                      "properties": {
                        "brreg": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "status",
                            "latencyMs",
                            "cacheHit"
                          ],
                          "description": "Status for én underliggende kilde.",
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "ok",
                                "error",
                                "not_found",
                                "not_configured"
                              ],
                              "example": "ok"
                            },
                            "latencyMs": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Latens for kildens kall i millisekunder.",
                              "example": 142
                            },
                            "cacheHit": {
                              "type": "boolean",
                              "example": true
                            },
                            "error": {
                              "type": "string",
                              "description": "Feilmelding. Til stede kun når status er error.",
                              "example": "Ukjent feil"
                            }
                          }
                        },
                        "roller": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "status",
                            "latencyMs",
                            "cacheHit"
                          ],
                          "description": "Status for én underliggende kilde.",
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "ok",
                                "error",
                                "not_found",
                                "not_configured"
                              ],
                              "example": "ok"
                            },
                            "latencyMs": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Latens for kildens kall i millisekunder.",
                              "example": 142
                            },
                            "cacheHit": {
                              "type": "boolean",
                              "example": true
                            },
                            "error": {
                              "type": "string",
                              "description": "Feilmelding. Til stede kun når status er error.",
                              "example": "Ukjent feil"
                            }
                          }
                        },
                        "regnskap": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "status",
                            "latencyMs",
                            "cacheHit"
                          ],
                          "description": "Status for én underliggende kilde.",
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "ok",
                                "error",
                                "not_found",
                                "not_configured"
                              ],
                              "example": "ok"
                            },
                            "latencyMs": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Latens for kildens kall i millisekunder.",
                              "example": 142
                            },
                            "cacheHit": {
                              "type": "boolean",
                              "example": true
                            },
                            "error": {
                              "type": "string",
                              "description": "Feilmelding. Til stede kun når status er error.",
                              "example": "Ukjent feil"
                            }
                          }
                        }
                      }
                    },
                    "_generatedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Tidspunkt profilen ble aggregert (ISO-8601).",
                      "example": "2026-06-24T12:00:00.123Z"
                    }
                  },
                  "$defs": {
                    "SourceMeta": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "status",
                        "latencyMs",
                        "cacheHit"
                      ],
                      "description": "Status for én underliggende kilde.",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "ok",
                            "error",
                            "not_found",
                            "not_configured"
                          ],
                          "example": "ok"
                        },
                        "latencyMs": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Latens for kildens kall i millisekunder.",
                          "example": 142
                        },
                        "cacheHit": {
                          "type": "boolean",
                          "example": true
                        },
                        "error": {
                          "type": "string",
                          "description": "Feilmelding. Til stede kun når status er error.",
                          "example": "Ukjent feil"
                        }
                      }
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "enhet": {
                      "companyKey": "NO-923609016",
                      "country": "NO",
                      "identifiers": {
                        "country": "NO",
                        "orgnr": "923609016"
                      },
                      "legalName": "EQUINOR ASA",
                      "status": "aktiv",
                      "organizationForm": {
                        "code": "ASA",
                        "description": "Allmennaksjeselskap"
                      },
                      "industryCode": {
                        "code": "06.100",
                        "description": "Utvinning av råolje"
                      },
                      "address": {
                        "street": "Forusbeen 50",
                        "postalCode": "4035",
                        "city": "STAVANGER",
                        "municipality": "STAVANGER",
                        "municipalityCode": "1103",
                        "country": "Norge"
                      },
                      "foundedDate": "1972-07-14",
                      "registrationDate": "1995-08-09",
                      "employeeCount": 21000,
                      "updatedAt": "2026-06-20T09:00:00.000Z",
                      "source": {
                        "system": "brreg",
                        "fetchedAt": "2026-06-24T12:00:00.000Z"
                      }
                    },
                    "roller": {
                      "organisasjonsnummer": "923609016",
                      "harAutorisertData": false,
                      "rollegrupper": [
                        {
                          "typeKode": "STYR",
                          "typeBeskrivelse": "Styre",
                          "sisteEndringsDato": "2025-04-30",
                          "roller": [
                            {
                              "person": {
                                "navn": "Ola Nordmann",
                                "fodselsdato": "1965-03-12",
                                "fodselsnummer": null,
                                "erDoed": false
                              },
                              "enhet": null,
                              "fratraadt": false,
                              "rekkefolge": 1,
                              "inntredelsesdato": "2020-05-12",
                              "fratredelsesdato": null
                            }
                          ]
                        }
                      ]
                    },
                    "sisteRegnskap": {
                      "orgnr": "923609016",
                      "virksomhetNavn": "EQUINOR ASA",
                      "år": 2024,
                      "driftsinntekter": 1234567000,
                      "aarsresultat": 98765000,
                      "sumEgenkapital": 500000000,
                      "sumGjeld": 300000000,
                      "sumEiendeler": 800000000,
                      "egenkapitalProsent": 62.5,
                      "gjeldsgrad": 0.6,
                      "driftsmarginPct": 8
                    },
                    "_sources": {
                      "brreg": {
                        "status": "ok",
                        "latencyMs": 142,
                        "cacheHit": true
                      },
                      "roller": {
                        "status": "ok",
                        "latencyMs": 88,
                        "cacheHit": false
                      },
                      "regnskap": {
                        "status": "ok",
                        "latencyMs": 210,
                        "cacheHit": false
                      }
                    },
                    "_generatedAt": "2026-06-24T12:00:00.123Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg/roller": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_roller",
        "summary": "GET /api/connectors/brreg/roller?orgnr=NNNNNNNNN Query-param-variant av rolle-oppslaget (#1174).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/roller/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer)",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/brreg/roller-autorisert/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_roller_autorisert__orgnr_",
        "summary": "GET /api/connectors/brreg/roller-autorisert/[orgnr] Autorisert rolle-oppslag fra Brreg Enhetsregiste",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/roller-autorisert/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRoller",
                  "additionalProperties": false,
                  "description": "Rollegrupper (styre, daglig leder, revisor m.fl.) for én enhet, med\nrolleinnehavere som enten er personer eller andre enheter.\n",
                  "required": [
                    "organisasjonsnummer",
                    "rollegrupper",
                    "harAutorisertData"
                  ],
                  "properties": {
                    "organisasjonsnummer": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummeret rollene gjelder for.",
                      "example": "974760673"
                    },
                    "harAutorisertData": {
                      "type": "boolean",
                      "description": "`true` hvis svaret inkluderer data fra det autoriserte rolle-API-et\n(krever Maskinporten); ellers er det den åpne delmengden.\n",
                      "example": false
                    },
                    "rollegrupper": {
                      "type": "array",
                      "description": "Rollegrupper gruppert etter type (f.eks. styre, kontaktperson).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "typeKode",
                          "typeBeskrivelse",
                          "sisteEndringsDato",
                          "roller"
                        ],
                        "properties": {
                          "typeKode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Kode for rollegruppetypen.",
                            "example": "STYR"
                          },
                          "typeBeskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Lesbar beskrivelse av rollegruppetypen.",
                            "example": "Styre"
                          },
                          "sisteEndringsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Siste endringsdato for gruppen (ISO-8601 `YYYY-MM-DD`).",
                            "example": "2024-03-12"
                          },
                          "roller": {
                            "type": "array",
                            "description": "Rolleinnehavere i gruppen.",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "person",
                                "enhet",
                                "fratraadt",
                                "rekkefolge",
                                "inntredelsesdato",
                                "fratredelsesdato"
                              ],
                              "properties": {
                                "person": {
                                  "description": "Personen som innehar rollen, eller `null` hvis rollen innehas av en enhet.",
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "navn",
                                        "fodselsdato",
                                        "fodselsnummer",
                                        "erDoed"
                                      ],
                                      "properties": {
                                        "navn": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "example": "Ola Nordmann"
                                        },
                                        "fodselsdato": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Fødselsdato (ISO-8601 `YYYY-MM-DD`) når tilgjengelig.",
                                          "example": "1970-01-01"
                                        },
                                        "fodselsnummer": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Fødselsnummer — kun fra autorisert API, ellers `null`."
                                        },
                                        "erDoed": {
                                          "type": "boolean",
                                          "example": false
                                        }
                                      }
                                    }
                                  ]
                                },
                                "enhet": {
                                  "description": "Enheten som innehar rollen, eller `null` hvis rollen innehas av en person.",
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "organisasjonsnummer",
                                        "navn"
                                      ],
                                      "properties": {
                                        "organisasjonsnummer": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "pattern": "^\\d{9}$",
                                          "example": "912345678"
                                        },
                                        "navn": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "example": "REVISJON AS"
                                        }
                                      }
                                    }
                                  ]
                                },
                                "fratraadt": {
                                  "type": "boolean",
                                  "description": "`true` hvis rolleinnehaveren har fratrådt.",
                                  "example": false
                                },
                                "rekkefolge": {
                                  "type": [
                                    "integer",
                                    "null"
                                  ],
                                  "description": "Rekkefølge innen rollegruppen.",
                                  "example": 1
                                },
                                "inntredelsesdato": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Dato for tiltreden (ISO-8601 `YYYY-MM-DD`).",
                                  "example": "2024-03-12"
                                },
                                "fratredelsesdato": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Dato for fratreden (ISO-8601 `YYYY-MM-DD`), `null` hvis aktiv.",
                                  "example": null
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "organisasjonsnummer": "974760673",
                    "harAutorisertData": false,
                    "rollegrupper": [
                      {
                        "typeKode": "STYR",
                        "typeBeskrivelse": "Styre",
                        "sisteEndringsDato": "2024-03-12",
                        "roller": [
                          {
                            "person": {
                              "navn": "Ola Nordmann",
                              "fodselsdato": "1970-01-01",
                              "fodselsnummer": null,
                              "erDoed": false
                            },
                            "enhet": null,
                            "fratraadt": false,
                            "rekkefolge": 1,
                            "inntredelsesdato": "2024-03-12",
                            "fratredelsesdato": null
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg/roller/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_roller__orgnr_",
        "summary": "GET /api/connectors/brreg/roller/[orgnr] Åpent (ingen KETL-auth) rolle-oppslag fra Brreg Enhetsregis",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/roller/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregRoller",
                  "additionalProperties": false,
                  "description": "Rollegrupper (styre, daglig leder, revisor m.fl.) for én enhet, med\nrolleinnehavere som enten er personer eller andre enheter.\n",
                  "required": [
                    "organisasjonsnummer",
                    "rollegrupper",
                    "harAutorisertData"
                  ],
                  "properties": {
                    "organisasjonsnummer": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummeret rollene gjelder for.",
                      "example": "974760673"
                    },
                    "harAutorisertData": {
                      "type": "boolean",
                      "description": "`true` hvis svaret inkluderer data fra det autoriserte rolle-API-et\n(krever Maskinporten); ellers er det den åpne delmengden.\n",
                      "example": false
                    },
                    "rollegrupper": {
                      "type": "array",
                      "description": "Rollegrupper gruppert etter type (f.eks. styre, kontaktperson).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "typeKode",
                          "typeBeskrivelse",
                          "sisteEndringsDato",
                          "roller"
                        ],
                        "properties": {
                          "typeKode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Kode for rollegruppetypen.",
                            "example": "STYR"
                          },
                          "typeBeskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Lesbar beskrivelse av rollegruppetypen.",
                            "example": "Styre"
                          },
                          "sisteEndringsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Siste endringsdato for gruppen (ISO-8601 `YYYY-MM-DD`).",
                            "example": "2024-03-12"
                          },
                          "roller": {
                            "type": "array",
                            "description": "Rolleinnehavere i gruppen.",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "person",
                                "enhet",
                                "fratraadt",
                                "rekkefolge",
                                "inntredelsesdato",
                                "fratredelsesdato"
                              ],
                              "properties": {
                                "person": {
                                  "description": "Personen som innehar rollen, eller `null` hvis rollen innehas av en enhet.",
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "navn",
                                        "fodselsdato",
                                        "fodselsnummer",
                                        "erDoed"
                                      ],
                                      "properties": {
                                        "navn": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "example": "Ola Nordmann"
                                        },
                                        "fodselsdato": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Fødselsdato (ISO-8601 `YYYY-MM-DD`) når tilgjengelig.",
                                          "example": "1970-01-01"
                                        },
                                        "fodselsnummer": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "description": "Fødselsnummer — kun fra autorisert API, ellers `null`."
                                        },
                                        "erDoed": {
                                          "type": "boolean",
                                          "example": false
                                        }
                                      }
                                    }
                                  ]
                                },
                                "enhet": {
                                  "description": "Enheten som innehar rollen, eller `null` hvis rollen innehas av en person.",
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": false,
                                      "required": [
                                        "organisasjonsnummer",
                                        "navn"
                                      ],
                                      "properties": {
                                        "organisasjonsnummer": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "pattern": "^\\d{9}$",
                                          "example": "912345678"
                                        },
                                        "navn": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "example": "REVISJON AS"
                                        }
                                      }
                                    }
                                  ]
                                },
                                "fratraadt": {
                                  "type": "boolean",
                                  "description": "`true` hvis rolleinnehaveren har fratrådt.",
                                  "example": false
                                },
                                "rekkefolge": {
                                  "type": [
                                    "integer",
                                    "null"
                                  ],
                                  "description": "Rekkefølge innen rollegruppen.",
                                  "example": 1
                                },
                                "inntredelsesdato": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Dato for tiltreden (ISO-8601 `YYYY-MM-DD`).",
                                  "example": "2024-03-12"
                                },
                                "fratredelsesdato": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Dato for fratreden (ISO-8601 `YYYY-MM-DD`), `null` hvis aktiv.",
                                  "example": null
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "organisasjonsnummer": "974760673",
                    "harAutorisertData": false,
                    "rollegrupper": [
                      {
                        "typeKode": "STYR",
                        "typeBeskrivelse": "Styre",
                        "sisteEndringsDato": "2024-03-12",
                        "roller": [
                          {
                            "person": {
                              "navn": "Ola Nordmann",
                              "fodselsdato": "1970-01-01",
                              "fodselsnummer": null,
                              "erDoed": false
                            },
                            "enhet": null,
                            "fratraadt": false,
                            "rekkefolge": 1,
                            "inntredelsesdato": "2024-03-12",
                            "fratredelsesdato": null
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/brreg/search": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_search",
        "summary": "GET /api/connectors/brreg/search?q=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregSokResultat",
                  "additionalProperties": false,
                  "description": "Paginert treffliste fra fritekstsøk mot Enhetsregisteret. Hvert treff er en\nfull `ConnectorBrregEnhet`.\n",
                  "required": [
                    "enheter",
                    "total",
                    "totalElements",
                    "totalPages",
                    "pageNumber",
                    "pageSize"
                  ],
                  "properties": {
                    "enheter": {
                      "type": "array",
                      "description": "Trefflisten for gjeldende side.",
                      "items": {
                        "type": "object",
                        "title": "ConnectorBrregEnhet",
                        "additionalProperties": false,
                        "description": "Normalisert enhet fra Enhetsregisteret (Brreg), slik connector-ruten\n`/api/connectors/brreg/{orgnr}` serverer den. Kilde-agnostiske felt-navn\n(`legalName`, `organizationForm`) — den interne #1119-Normalized-formen.\n",
                        "required": [
                          "companyKey",
                          "country",
                          "identifiers",
                          "legalName",
                          "status",
                          "updatedAt",
                          "source"
                        ],
                        "properties": {
                          "companyKey": {
                            "type": "string",
                            "description": "Intern, stabil entitetsnøkkel (`NO:<orgnr>`).",
                            "example": "NO:974760673"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "NO"
                            ],
                            "description": "ISO 3166-1 alpha-2-landkode for registeret. Brreg er alltid `NO`.",
                            "example": "NO"
                          },
                          "identifiers": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "country",
                              "orgnr"
                            ],
                            "description": "Nasjonal identifikator for enheten.",
                            "properties": {
                              "country": {
                                "type": "string",
                                "enum": [
                                  "NO"
                                ]
                              },
                              "orgnr": {
                                "type": "string",
                                "pattern": "^\\d{9}$",
                                "description": "Norsk organisasjonsnummer (9 siffer).",
                                "example": "974760673"
                              }
                            }
                          },
                          "legalName": {
                            "type": "string",
                            "minLength": 1,
                            "description": "Registrert foretaksnavn.",
                            "example": "STATENS VEGVESEN"
                          },
                          "status": {
                            "type": "string",
                            "description": "Aggregert status-streng utledet fra Brreg-flagg (f.eks. `active`,\n`bankrupt`, `under-liquidation`).\n",
                            "example": "active"
                          },
                          "organizationForm": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "code",
                              "description"
                            ],
                            "description": "Organisasjonsform per Brreg-kodeverk.",
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "ORGL"
                              },
                              "description": {
                                "type": "string",
                                "example": "Organisasjonsledd"
                              }
                            }
                          },
                          "industryCode": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "code",
                              "description"
                            ],
                            "description": "Primær næringskode (NACE).",
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "84.130"
                              },
                              "description": {
                                "type": "string",
                                "example": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
                              }
                            }
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Forretningsadresse (alle delfelt er valgfrie).",
                            "properties": {
                              "street": {
                                "type": "string",
                                "example": "Postboks 1010 Nordre Ål"
                              },
                              "postalCode": {
                                "type": "string",
                                "example": "2605"
                              },
                              "city": {
                                "type": "string",
                                "example": "LILLEHAMMER"
                              },
                              "municipality": {
                                "type": "string",
                                "example": "LILLEHAMMER"
                              },
                              "municipalityCode": {
                                "type": "string",
                                "example": "3405"
                              },
                              "country": {
                                "type": "string",
                                "example": "NO"
                              }
                            }
                          },
                          "foundedDate": {
                            "type": "string",
                            "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                            "example": "1864-07-01"
                          },
                          "registrationDate": {
                            "type": "string",
                            "description": "Registreringsdato i Enhetsregisteret (ISO-8601 `YYYY-MM-DD`).",
                            "example": "1995-08-09"
                          },
                          "employeeCount": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Antall ansatte fra siste Brreg-snapshot.",
                            "example": 7500
                          },
                          "updatedAt": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Tidspunkt da enheten sist ble normalisert (ISO-8601).",
                            "example": "2026-05-04T08:30:00.000Z"
                          },
                          "source": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "system",
                              "fetchedAt"
                            ],
                            "description": "Proveniens — hvilken kilde som leverte payloaden (#74 explainability).",
                            "properties": {
                              "system": {
                                "type": "string",
                                "enum": [
                                  "brreg"
                                ],
                                "example": "brreg"
                              },
                              "fetchedAt": {
                                "type": "string",
                                "format": "date-time",
                                "description": "Tidspunkt da rå-payloaden ble hentet fra upstream (ISO-8601).",
                                "example": "2026-05-04T08:30:00.000Z"
                              }
                            }
                          }
                        },
                        "example": {
                          "companyKey": "NO:974760673",
                          "country": "NO",
                          "identifiers": {
                            "country": "NO",
                            "orgnr": "974760673"
                          },
                          "legalName": "STATENS VEGVESEN",
                          "status": "active",
                          "organizationForm": {
                            "code": "ORGL",
                            "description": "Organisasjonsledd"
                          },
                          "industryCode": {
                            "code": "84.130",
                            "description": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
                          },
                          "address": {
                            "street": "Postboks 1010 Nordre Ål",
                            "postalCode": "2605",
                            "city": "LILLEHAMMER",
                            "municipality": "LILLEHAMMER",
                            "municipalityCode": "3405",
                            "country": "NO"
                          },
                          "foundedDate": "1864-07-01",
                          "registrationDate": "1995-08-09",
                          "employeeCount": 7500,
                          "updatedAt": "2026-05-04T08:30:00.000Z",
                          "source": {
                            "system": "brreg",
                            "fetchedAt": "2026-05-04T08:30:00.000Z"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Kanonisk totalantall treff på tvers av alle sider.",
                      "example": 42
                    },
                    "totalElements": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Brreg-upstream totalantall (speiler `total`, beholdt for kompatibilitet).",
                      "example": 42
                    },
                    "totalPages": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall sider gitt `pageSize`.",
                      "example": 3
                    },
                    "pageNumber": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "0-indeksert sidenummer for dette resultatet.",
                      "example": 0
                    },
                    "pageSize": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Antall treff per side.",
                      "example": 20
                    }
                  },
                  "example": {
                    "total": 1,
                    "totalElements": 1,
                    "totalPages": 1,
                    "pageNumber": 0,
                    "pageSize": 20,
                    "enheter": [
                      {
                        "companyKey": "NO:974760673",
                        "country": "NO",
                        "identifiers": {
                          "country": "NO",
                          "orgnr": "974760673"
                        },
                        "legalName": "STATENS VEGVESEN",
                        "status": "active",
                        "updatedAt": "2026-05-04T08:30:00.000Z",
                        "source": {
                          "system": "brreg",
                          "fetchedAt": "2026-05-04T08:30:00.000Z"
                        }
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng (mappes til navn). Minst ett selektivt filter kreves — 400 ellers.",
            "example": "Equinor"
          }
        ]
      }
    },
    "/api/connectors/brreg/statistikk/konkurser": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg_statistikk_konkurser",
        "summary": "GET /api/connectors/brreg/statistikk/konkurser Aggregert konkursstatistikk fra Brreg Enhetsregistere",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/statistikk/konkurser/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/brreg/{orgnr}": {
      "get": {
        "tags": [
          "connector:brreg"
        ],
        "operationId": "get_api_connectors_brreg__orgnr_",
        "summary": "GET /api/connectors/brreg/[orgnr] Offentlig (ingen auth på Next.js-laget — auth skjer i Firebase Fun",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/brreg/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorBrregEnhet",
                  "additionalProperties": false,
                  "description": "Normalisert enhet fra Enhetsregisteret (Brreg), slik connector-ruten\n`/api/connectors/brreg/{orgnr}` serverer den. Kilde-agnostiske felt-navn\n(`legalName`, `organizationForm`) — den interne #1119-Normalized-formen.\n",
                  "required": [
                    "companyKey",
                    "country",
                    "identifiers",
                    "legalName",
                    "status",
                    "updatedAt",
                    "source"
                  ],
                  "properties": {
                    "companyKey": {
                      "type": "string",
                      "description": "Intern, stabil entitetsnøkkel (`NO:<orgnr>`).",
                      "example": "NO:974760673"
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "NO"
                      ],
                      "description": "ISO 3166-1 alpha-2-landkode for registeret. Brreg er alltid `NO`.",
                      "example": "NO"
                    },
                    "identifiers": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "country",
                        "orgnr"
                      ],
                      "description": "Nasjonal identifikator for enheten.",
                      "properties": {
                        "country": {
                          "type": "string",
                          "enum": [
                            "NO"
                          ]
                        },
                        "orgnr": {
                          "type": "string",
                          "pattern": "^\\d{9}$",
                          "description": "Norsk organisasjonsnummer (9 siffer).",
                          "example": "974760673"
                        }
                      }
                    },
                    "legalName": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Registrert foretaksnavn.",
                      "example": "STATENS VEGVESEN"
                    },
                    "status": {
                      "type": "string",
                      "description": "Aggregert status-streng utledet fra Brreg-flagg (f.eks. `active`,\n`bankrupt`, `under-liquidation`).\n",
                      "example": "active"
                    },
                    "organizationForm": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "code",
                        "description"
                      ],
                      "description": "Organisasjonsform per Brreg-kodeverk.",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "ORGL"
                        },
                        "description": {
                          "type": "string",
                          "example": "Organisasjonsledd"
                        }
                      }
                    },
                    "industryCode": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "code",
                        "description"
                      ],
                      "description": "Primær næringskode (NACE).",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "84.130"
                        },
                        "description": {
                          "type": "string",
                          "example": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
                        }
                      }
                    },
                    "address": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Forretningsadresse (alle delfelt er valgfrie).",
                      "properties": {
                        "street": {
                          "type": "string",
                          "example": "Postboks 1010 Nordre Ål"
                        },
                        "postalCode": {
                          "type": "string",
                          "example": "2605"
                        },
                        "city": {
                          "type": "string",
                          "example": "LILLEHAMMER"
                        },
                        "municipality": {
                          "type": "string",
                          "example": "LILLEHAMMER"
                        },
                        "municipalityCode": {
                          "type": "string",
                          "example": "3405"
                        },
                        "country": {
                          "type": "string",
                          "example": "NO"
                        }
                      }
                    },
                    "foundedDate": {
                      "type": "string",
                      "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                      "example": "1864-07-01"
                    },
                    "registrationDate": {
                      "type": "string",
                      "description": "Registreringsdato i Enhetsregisteret (ISO-8601 `YYYY-MM-DD`).",
                      "example": "1995-08-09"
                    },
                    "employeeCount": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall ansatte fra siste Brreg-snapshot.",
                      "example": 7500
                    },
                    "updatedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Tidspunkt da enheten sist ble normalisert (ISO-8601).",
                      "example": "2026-05-04T08:30:00.000Z"
                    },
                    "source": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "system",
                        "fetchedAt"
                      ],
                      "description": "Proveniens — hvilken kilde som leverte payloaden (#74 explainability).",
                      "properties": {
                        "system": {
                          "type": "string",
                          "enum": [
                            "brreg"
                          ],
                          "example": "brreg"
                        },
                        "fetchedAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Tidspunkt da rå-payloaden ble hentet fra upstream (ISO-8601).",
                          "example": "2026-05-04T08:30:00.000Z"
                        }
                      }
                    }
                  },
                  "example": {
                    "companyKey": "NO:974760673",
                    "country": "NO",
                    "identifiers": {
                      "country": "NO",
                      "orgnr": "974760673"
                    },
                    "legalName": "STATENS VEGVESEN",
                    "status": "active",
                    "organizationForm": {
                      "code": "ORGL",
                      "description": "Organisasjonsledd"
                    },
                    "industryCode": {
                      "code": "84.130",
                      "description": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
                    },
                    "address": {
                      "street": "Postboks 1010 Nordre Ål",
                      "postalCode": "2605",
                      "city": "LILLEHAMMER",
                      "municipality": "LILLEHAMMER",
                      "municipalityCode": "3405",
                      "country": "NO"
                    },
                    "foundedDate": "1864-07-01",
                    "registrationDate": "1995-08-09",
                    "employeeCount": 7500,
                    "updatedAt": "2026-05-04T08:30:00.000Z",
                    "source": {
                      "system": "brreg",
                      "fetchedAt": "2026-05-04T08:30:00.000Z"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/cvr/company/{cvr}": {
      "get": {
        "tags": [
          "connector:cvr"
        ],
        "operationId": "get_api_connectors_cvr_company__cvr_",
        "summary": "GET /api/connectors/cvr/company/[cvr] Slå opp ett dansk selskap på CVR-nummer mot cvrapi.dk (Erhverv",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/cvr/company/[cvr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCvrCompany",
                  "additionalProperties": false,
                  "description": "Normalisert virksomhet fra det danske CVR-registeret. Kilde-agnostiske\nengelske feltnavn (den interne #1119-Normalized-formen).\n",
                  "required": [
                    "company",
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "cvr"
                      ],
                      "description": "Proveniens — kilden som leverte payloaden (#74 explainability).",
                      "example": "cvr"
                    },
                    "company": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "companyKey",
                        "identifiers",
                        "legalName",
                        "status",
                        "address",
                        "updatedAt",
                        "source"
                      ],
                      "properties": {
                        "companyKey": {
                          "type": "string",
                          "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
                          "example": "DK:25052943"
                        },
                        "identifiers": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "country",
                            "cvr"
                          ],
                          "properties": {
                            "country": {
                              "type": "string",
                              "enum": [
                                "DK"
                              ]
                            },
                            "cvr": {
                              "type": "string",
                              "description": "Dansk CVR-nummer.",
                              "example": "25052943"
                            }
                          }
                        },
                        "legalName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Registrert virksomhetsnavn (null hvis ukjent upstream).",
                          "example": "MAERSK A/S"
                        },
                        "status": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Virksomhetsstatus fra CVR (null hvis ukjent).",
                          "example": "NORMAL"
                        },
                        "address": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "street",
                            "postalCode",
                            "city",
                            "country"
                          ],
                          "description": "Adresse (delfelter kan være null).",
                          "properties": {
                            "street": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "Esplanaden 50"
                            },
                            "postalCode": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "1263"
                            },
                            "city": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "København K"
                            },
                            "country": {
                              "type": "string",
                              "enum": [
                                "DK"
                              ]
                            }
                          }
                        },
                        "updatedAt": {
                          "type": "integer",
                          "description": "Tidspunkt da dokumentet sist ble normalisert (epoch-millisekund).",
                          "example": 1746345000000
                        },
                        "source": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "system",
                            "fetchedAt",
                            "upstreamUpdatedAt"
                          ],
                          "properties": {
                            "system": {
                              "type": "string",
                              "enum": [
                                "cvr"
                              ]
                            },
                            "fetchedAt": {
                              "type": "integer",
                              "description": "Tidspunkt da rå-payloaden ble hentet upstream (epoch-millisekund).",
                              "example": 1746345000000
                            },
                            "upstreamUpdatedAt": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Upstream-oppdateringstidspunkt hvis oppgitt (ellers null).",
                              "example": "2026-04-01"
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "cvr",
                    "company": {
                      "companyKey": "DK:25052943",
                      "identifiers": {
                        "country": "DK",
                        "cvr": "25052943"
                      },
                      "legalName": "MAERSK A/S",
                      "status": "NORMAL",
                      "address": {
                        "street": "Esplanaden 50",
                        "postalCode": "1263",
                        "city": "København K",
                        "country": "DK"
                      },
                      "updatedAt": 1746345000000,
                      "source": {
                        "system": "cvr",
                        "fetchedAt": 1746345000000,
                        "upstreamUpdatedAt": "2026-04-01"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cvr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `cvr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/cvr/direktoerer/{cvr}": {
      "get": {
        "tags": [
          "connector:cvr"
        ],
        "operationId": "get_api_connectors_cvr_direktoerer__cvr_",
        "summary": "GET /api/connectors/cvr/direktoerer/[cvr] Returnerer ledelse/direktører for et dansk selskap.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/cvr/direktoerer/[cvr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCvrDirektoerer",
                  "additionalProperties": false,
                  "description": "Direktører/ledelse for en dansk virksomhet (cvrapi.virk.dk).",
                  "required": [
                    "cvr",
                    "companyKey",
                    "count",
                    "directors"
                  ],
                  "properties": {
                    "cvr": {
                      "type": "string",
                      "description": "Dansk CVR-nummer.",
                      "example": "25052943"
                    },
                    "companyKey": {
                      "type": "string",
                      "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
                      "example": "DK:25052943"
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall direktører i `directors`.",
                      "example": 1
                    },
                    "directors": {
                      "type": "array",
                      "description": "Direktører/ledelse (tom hvis upstream ikke eksponerte `management`).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "navn",
                          "cvr",
                          "stilling",
                          "startDato"
                        ],
                        "properties": {
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Robert Mærsk Uggla"
                          },
                          "cvr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Direktørens CVR (null for personer/ukjent).",
                            "example": null
                          },
                          "stilling": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Adm. direktør"
                          },
                          "startDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Tiltredelsesdato (ISO-8601), eller null.",
                            "example": "2018-04-01"
                          }
                        }
                      }
                    },
                    "note": {
                      "type": "string",
                      "description": "Til stede når `directors` er tom — peker på autoritativ ledelsesinfo."
                    }
                  },
                  "example": {
                    "cvr": "25052943",
                    "companyKey": "DK:25052943",
                    "count": 1,
                    "directors": [
                      {
                        "navn": "Robert Mærsk Uggla",
                        "cvr": null,
                        "stilling": "Adm. direktør",
                        "startDato": "2018-04-01"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cvr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `cvr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/cvr/ejerforhold/{cvr}": {
      "get": {
        "tags": [
          "connector:cvr"
        ],
        "operationId": "get_api_connectors_cvr_ejerforhold__cvr_",
        "summary": "GET /api/connectors/cvr/ejerforhold/[cvr] Returnerer eierstrukturen for et dansk selskap — eiere med",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/cvr/ejerforhold/[cvr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCvrEjerforhold",
                  "additionalProperties": false,
                  "description": "Reelle/registrerte eiere for en dansk virksomhet (cvrapi.virk.dk).",
                  "required": [
                    "cvr",
                    "companyKey",
                    "count",
                    "owners"
                  ],
                  "properties": {
                    "cvr": {
                      "type": "string",
                      "description": "Dansk CVR-nummer.",
                      "example": "25052943"
                    },
                    "companyKey": {
                      "type": "string",
                      "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
                      "example": "DK:25052943"
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall eiere i `owners`.",
                      "example": 2
                    },
                    "owners": {
                      "type": "array",
                      "description": "Eiere (tom hvis upstream ikke eksponerte `owners`-feltet).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "navn",
                          "cvr",
                          "ejerandel",
                          "stemmerett",
                          "startDato",
                          "rolle"
                        ],
                        "properties": {
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "A.P. Møller Holding A/S"
                          },
                          "cvr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Eierens CVR-nummer (null for personer/ukjent).",
                            "example": "12345674"
                          },
                          "ejerandel": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Eierandel i prosent (null hvis ukjent).",
                            "example": 41.51
                          },
                          "stemmerett": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Stemmerett i prosent (null hvis ukjent).",
                            "example": 51
                          },
                          "startDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Eierskapets startdato (ISO-8601), eller null.",
                            "example": "2003-01-01"
                          },
                          "rolle": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Legal ejer"
                          }
                        }
                      }
                    },
                    "note": {
                      "type": "string",
                      "description": "Til stede når `owners` er tom — peker på autoritativt eier-register."
                    }
                  },
                  "example": {
                    "cvr": "25052943",
                    "companyKey": "DK:25052943",
                    "count": 1,
                    "owners": [
                      {
                        "navn": "A.P. Møller Holding A/S",
                        "cvr": "12345674",
                        "ejerandel": 41.51,
                        "stemmerett": 51,
                        "startDato": "2003-01-01",
                        "rolle": "Legal ejer"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cvr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `cvr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/cvr/health": {
      "get": {
        "tags": [
          "connector:cvr"
        ],
        "operationId": "get_api_connectors_cvr_health",
        "summary": "GET /api/connectors/cvr/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/cvr/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/cvr/regnskaber/{cvr}": {
      "get": {
        "tags": [
          "connector:cvr"
        ],
        "operationId": "get_api_connectors_cvr_regnskaber__cvr_",
        "summary": "GET /api/connectors/cvr/regnskaber/[cvr] Returnerer direkte lenker til Erhvervsstyrelsens offisielle",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/cvr/regnskaber/[cvr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCvrRegnskaber",
                  "additionalProperties": false,
                  "description": "Direkte lenker til Erhvervsstyrelsens regnskaps-/virksomhetsportaler for en\ndansk virksomhet. Listing av selve regnskapene krever Datafordeler-tilgang.\n",
                  "required": [
                    "cvr",
                    "companyKey",
                    "links",
                    "note"
                  ],
                  "properties": {
                    "cvr": {
                      "type": "string",
                      "description": "Dansk CVR-nummer.",
                      "example": "25052943"
                    },
                    "companyKey": {
                      "type": "string",
                      "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
                      "example": "DK:25052943"
                    },
                    "links": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "cvr",
                        "portalUrl",
                        "regnskabPortalUrl",
                        "rawDataUrl"
                      ],
                      "properties": {
                        "cvr": {
                          "type": "string",
                          "example": "25052943"
                        },
                        "portalUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Full virksomhetsside på datacvr.virk.dk.",
                          "example": "https://datacvr.virk.dk/enhed/virksomhed/25052943"
                        },
                        "regnskabPortalUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Innleverte XBRL-/PDF-regnskaper.",
                          "example": "https://regnskaber.virk.dk/?cvrnummer=25052943"
                        },
                        "rawDataUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Erhvervsstyrelsens åpne data-katalog for innleverte XBRL-regnskaper.",
                          "example": "https://datacvr.virk.dk/data/?cvrnummer=25052943"
                        }
                      }
                    },
                    "note": {
                      "type": "string",
                      "description": "Forklaring på hvorfor regnskapene lenkes til i stedet for å listes."
                    }
                  },
                  "example": {
                    "cvr": "25052943",
                    "companyKey": "DK:25052943",
                    "links": {
                      "cvr": "25052943",
                      "portalUrl": "https://datacvr.virk.dk/enhed/virksomhed/25052943",
                      "regnskabPortalUrl": "https://regnskaber.virk.dk/?cvrnummer=25052943",
                      "rawDataUrl": "https://datacvr.virk.dk/data/?cvrnummer=25052943"
                    },
                    "note": "Erhvervsstyrelsens regnskaber er ikke åpent listebart per CVR via cvrapi.virk.dk."
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cvr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `cvr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/cvr/search": {
      "get": {
        "tags": [
          "connector:cvr"
        ],
        "operationId": "get_api_connectors_cvr_search",
        "summary": "GET /api/connectors/cvr/search?q=<term>&size=<n> Navnesøk mot cvrapi.virk.dk.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/cvr/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCvrSearch",
                  "additionalProperties": false,
                  "description": "Fritekstsøk i det danske CVR-registeret. Treff med CVR-nummer, navn, status og adresse.",
                  "required": [
                    "query",
                    "count",
                    "results"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "novo nordisk"
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "cvr",
                          "navn",
                          "status",
                          "adresse",
                          "postnummer",
                          "by",
                          "branche",
                          "stiftelsesdato"
                        ],
                        "properties": {
                          "cvr": {
                            "type": "string",
                            "example": "24256790"
                          },
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Novo Nordisk A/S"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NORMAL"
                          },
                          "adresse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Novo Allé 1"
                          },
                          "postnummer": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2880"
                          },
                          "by": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Bagsværd"
                          },
                          "branche": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Fremstilling af farmaceutiske råvarer"
                          },
                          "stiftelsesdato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1931-12-31"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "novo nordisk",
                    "count": 1,
                    "results": [
                      {
                        "cvr": "24256790",
                        "navn": "Novo Nordisk A/S",
                        "status": "NORMAL",
                        "adresse": "Novo Allé 1",
                        "postnummer": "2880",
                        "by": "Bagsværd",
                        "branche": "Fremstilling af farmaceutiske råvarer",
                        "stiftelsesdato": "1931-12-31"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-søketerm (selskapsnavn).",
            "example": "Maersk"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Maks antall treff.",
            "example": "10"
          }
        ]
      }
    },
    "/api/connectors/data-europa-eu/dataset/{id}": {
      "get": {
        "tags": [
          "connector:data-europa-eu"
        ],
        "operationId": "get_api_connectors_data_europa_eu_dataset__id_",
        "summary": "GET /api/connectors/data-europa-eu/dataset/[id] (#1214).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-eu/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataEuropaEuDataset",
                  "additionalProperties": false,
                  "description": "Normalisert EU-datasett-detalj fra data.europa.eu (Hub Search / CKAN package_show). Tekstfelt er språk-normalisert (engelsk først, ellers første tilgjengelige språk).",
                  "required": [
                    "id",
                    "title",
                    "description",
                    "publisher",
                    "country",
                    "themes",
                    "license",
                    "modified",
                    "issued",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Datasett-id (Hub Search `id`/`idName`, ellers CKAN `name`).",
                      "example": "https://data.europa.eu/88u/dataset/example-dataset"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Datasett-tittel (språk-valgt).",
                      "example": "Air quality measurements"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Datasett-beskrivelse (språk-valgt; CKAN `notes` som fallback).",
                      "example": "Hourly air quality measurements across EU monitoring stations."
                    },
                    "publisher": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Utgiver (Hub Search `publisher.name`, ellers CKAN `organization.title`).",
                      "example": "European Environment Agency"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Landkode i versaler (2-bokstavs eller upstream-id), `null` hvis ukjent.",
                      "example": "EU"
                    },
                    "themes": {
                      "type": "array",
                      "description": "DCAT-AP-temakoder / kategorier i versaler (kan inkludere CKAN-grupper). Alltid til stede, men kan være tom.",
                      "items": {
                        "type": "string",
                        "example": "ENVI"
                      },
                      "example": [
                        "ENVI",
                        "HEAL"
                      ]
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lisens-id eller -tittel (Hub Search lisens-objekt, ellers CKAN `license_title`/`license_id`).",
                      "example": "CC0-1.0"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret (ISO-8601; CKAN `metadata_modified` som fallback).",
                      "example": "2026-05-01T08:00:00Z"
                    },
                    "issued": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Først publisert (ISO-8601; CKAN `metadata_created` som fallback).",
                      "example": "2024-01-15T12:00:00Z"
                    },
                    "resources": {
                      "type": "array",
                      "description": "Distribusjoner/ressurser (Hub Search `distributions`, ellers CKAN `resources`). Alltid til stede, men kan være tom.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "title",
                          "format",
                          "url"
                        ],
                        "description": "Én distribusjon/ressurs. Alle felt er nullable.",
                        "properties": {
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressurs-tittel (språk-valgt for distribusjoner).",
                            "example": "CSV download"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Filformat (f.eks. CSV, JSON, XML).",
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Aksess-URL (første tilgjengelige `access_url` for distribusjoner).",
                            "example": "https://data.europa.eu/data/datasets/example/download.csv"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "https://data.europa.eu/88u/dataset/example-dataset",
                    "title": "Air quality measurements",
                    "description": "Hourly air quality measurements across EU monitoring stations.",
                    "publisher": "European Environment Agency",
                    "country": "EU",
                    "themes": [
                      "ENVI",
                      "HEAL"
                    ],
                    "license": "CC0-1.0",
                    "modified": "2026-05-01T08:00:00Z",
                    "issued": "2024-01-15T12:00:00Z",
                    "resources": [
                      {
                        "title": "CSV download",
                        "format": "CSV",
                        "url": "https://data.europa.eu/data/datasets/example/download.csv"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/data-europa-eu/health": {
      "get": {
        "tags": [
          "connector:data-europa-eu"
        ],
        "operationId": "get_api_connectors_data_europa_eu_health",
        "summary": "GET /api/connectors/data-europa-eu/health (#1214).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-eu/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-europa-eu/search": {
      "get": {
        "tags": [
          "connector:data-europa-eu"
        ],
        "operationId": "get_api_connectors_data_europa_eu_search",
        "summary": "GET /api/connectors/data-europa-eu/search?q=&country=&theme=&limit=&page= (#1214).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-eu/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataEuropaEuSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søk på EUs åpen-data-portal (data.europa.eu): tittel, utgiver, land, temaer, lisens og ressurser.",
                  "required": [
                    "datasets",
                    "count",
                    "limit",
                    "page"
                  ],
                  "properties": {
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "title",
                          "description",
                          "publisher",
                          "country",
                          "themes",
                          "license",
                          "modified",
                          "issued",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "eu-ds-42"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "European air quality"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "publisher": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "European Environment Agency"
                          },
                          "country": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "EU"
                          },
                          "themes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "ENVI"
                            ]
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CC-BY-4.0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-03-01"
                          },
                          "issued": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2020-01-01"
                          },
                          "resources": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "title",
                                "format",
                                "url"
                              ],
                              "properties": {
                                "title": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "Download CSV"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://example.eu/aq.csv"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "example": 350
                    },
                    "limit": {
                      "type": "integer",
                      "example": 10
                    },
                    "page": {
                      "type": "integer",
                      "example": 0
                    }
                  },
                  "example": {
                    "datasets": [
                      {
                        "id": "eu-ds-42",
                        "title": "European air quality",
                        "description": "Hourly AQ measurements.",
                        "publisher": "European Environment Agency",
                        "country": "EU",
                        "themes": [
                          "ENVI"
                        ],
                        "license": "CC-BY-4.0",
                        "modified": "2025-03-01",
                        "issued": "2020-01-01",
                        "resources": [
                          {
                            "title": "Download CSV",
                            "format": "CSV",
                            "url": "https://example.eu/aq.csv"
                          }
                        ]
                      }
                    ],
                    "count": 350,
                    "limit": 10,
                    "page": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Landkode-filter",
            "example": "no"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk (minst én av q/country/theme)",
            "example": "energy"
          },
          {
            "name": "theme",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Tema-filter",
            "example": "ENVI"
          }
        ]
      }
    },
    "/api/connectors/data-europa-mqa/catalogues/{id}": {
      "get": {
        "tags": [
          "connector:data-europa-mqa"
        ],
        "operationId": "get_api_connectors_data_europa_mqa_catalogues__id_",
        "summary": "GET /api/connectors/data-europa-mqa/catalogues/[id] (#3256).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-mqa/catalogues/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataEuropaMqaCatalogue",
                  "additionalProperties": false,
                  "description": "Normalisert MQA-rapport (Metadata Quality Assurance) for én data.europa.eu-catalogue. Total-score 0–450 med klassifisering og fem dimensjoner. `normalizeMqaEntry` populerer alltid alle topp-nivå-felt; verdier kan være null når upstream mangler dem.",
                  "required": [
                    "id",
                    "title",
                    "score",
                    "rating",
                    "maxScore",
                    "dimensions"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Catalogue-slug fra upstream `info.id` (null hvis ikke levert).",
                      "example": "norway"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Visningsnavn hvis levert av upstream.",
                      "example": "Norway"
                    },
                    "score": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "maximum": 450,
                      "description": "Total MQA-poengsum (0–450). Null hvis upstream ikke leverte score.",
                      "example": 372
                    },
                    "rating": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "excellent",
                        "good",
                        "sufficient",
                        "bad",
                        null
                      ],
                      "description": "Klassifisering basert på offisiell MQA-metodikk: excellent ≥351, good ≥221, sufficient ≥121, ellers bad. Null når `score` er null.",
                      "example": "excellent"
                    },
                    "maxScore": {
                      "type": "integer",
                      "enum": [
                        450
                      ],
                      "description": "Maks oppnåelig total-score (konstant 450).",
                      "example": 450
                    },
                    "dimensions": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "De fem MQA-dimensjonene, hver med en score-blokk.",
                      "required": [
                        "findability",
                        "accessibility",
                        "interoperability",
                        "reusability",
                        "contextuality"
                      ],
                      "properties": {
                        "findability": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "Poengblokk for én MQA-dimensjon.",
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 100,
                              "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "maxPoints": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                              "example": 100
                            }
                          }
                        },
                        "accessibility": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "Poengblokk for én MQA-dimensjon.",
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 100,
                              "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "maxPoints": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                              "example": 100
                            }
                          }
                        },
                        "interoperability": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "Poengblokk for én MQA-dimensjon.",
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 100,
                              "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "maxPoints": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                              "example": 100
                            }
                          }
                        },
                        "reusability": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "Poengblokk for én MQA-dimensjon.",
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 100,
                              "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "maxPoints": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                              "example": 100
                            }
                          }
                        },
                        "contextuality": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "Poengblokk for én MQA-dimensjon.",
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 100,
                              "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                              "example": 95
                            },
                            "maxPoints": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                              "example": 100
                            }
                          }
                        }
                      }
                    }
                  },
                  "$defs": {
                    "MqaScore": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Poengblokk for én MQA-dimensjon.",
                      "required": [
                        "points",
                        "percentage",
                        "maxPoints"
                      ],
                      "properties": {
                        "points": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                          "example": 95
                        },
                        "percentage": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "maximum": 100,
                          "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                          "example": 95
                        },
                        "maxPoints": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                          "example": 100
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "norway",
                    "title": "Norway",
                    "score": 372,
                    "rating": "excellent",
                    "maxScore": 450,
                    "dimensions": {
                      "findability": {
                        "points": 95,
                        "percentage": 95,
                        "maxPoints": 100
                      },
                      "accessibility": {
                        "points": 88,
                        "percentage": 88,
                        "maxPoints": 100
                      },
                      "interoperability": {
                        "points": 99,
                        "percentage": 90,
                        "maxPoints": 110
                      },
                      "reusability": {
                        "points": 72,
                        "percentage": 96,
                        "maxPoints": 75
                      },
                      "contextuality": {
                        "points": 18,
                        "percentage": 90,
                        "maxPoints": 20
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/data-europa-mqa/countries": {
      "get": {
        "tags": [
          "connector:data-europa-mqa"
        ],
        "operationId": "get_api_connectors_data_europa_mqa_countries",
        "summary": "GET /api/connectors/data-europa-mqa/countries (#3256).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-mqa/countries/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-europa-mqa/countries/{id}": {
      "get": {
        "tags": [
          "connector:data-europa-mqa"
        ],
        "operationId": "get_api_connectors_data_europa_mqa_countries__id_",
        "summary": "GET /api/connectors/data-europa-mqa/countries/[id] (#3256).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-mqa/countries/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataEuropaMqaCountry",
                  "additionalProperties": false,
                  "description": "Metadata-kvalitetsscore (MQA) for ett land på data.europa.eu. Samlet score + rating + fem FAIR-dimensjoner (findability, accessibility, interoperability, reusability, contextuality). Hver dimensjon: points/percentage/maxPoints.",
                  "required": [
                    "id",
                    "title",
                    "score",
                    "rating",
                    "maxScore",
                    "dimensions"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "no"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Norway"
                    },
                    "score": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Samlet MQA-poengsum.",
                      "example": 342
                    },
                    "rating": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "excellent",
                        "good",
                        "sufficient",
                        "bad",
                        null
                      ],
                      "description": "Kvalitetsklassifisering utledet fra `score`."
                    },
                    "maxScore": {
                      "type": "integer",
                      "description": "Maks mulig poengsum.",
                      "example": 405
                    },
                    "dimensions": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "findability",
                        "accessibility",
                        "interoperability",
                        "reusability",
                        "contextuality"
                      ],
                      "properties": {
                        "findability": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 95
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 95
                            },
                            "maxPoints": {
                              "type": "integer",
                              "example": 100
                            }
                          }
                        },
                        "accessibility": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 90
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 90
                            },
                            "maxPoints": {
                              "type": "integer",
                              "example": 100
                            }
                          }
                        },
                        "interoperability": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 92
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 83.6
                            },
                            "maxPoints": {
                              "type": "integer",
                              "example": 110
                            }
                          }
                        },
                        "reusability": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 55
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 73.3
                            },
                            "maxPoints": {
                              "type": "integer",
                              "example": 75
                            }
                          }
                        },
                        "contextuality": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "points",
                            "percentage",
                            "maxPoints"
                          ],
                          "properties": {
                            "points": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 10
                            },
                            "percentage": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 50
                            },
                            "maxPoints": {
                              "type": "integer",
                              "example": 20
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "no",
                    "title": "Norway",
                    "score": 342,
                    "rating": "good",
                    "maxScore": 405,
                    "dimensions": {
                      "findability": {
                        "points": 95,
                        "percentage": 95,
                        "maxPoints": 100
                      },
                      "accessibility": {
                        "points": 90,
                        "percentage": 90,
                        "maxPoints": 100
                      },
                      "interoperability": {
                        "points": 92,
                        "percentage": 83.6,
                        "maxPoints": 110
                      },
                      "reusability": {
                        "points": 55,
                        "percentage": 73.3,
                        "maxPoints": 75
                      },
                      "contextuality": {
                        "points": 10,
                        "percentage": 50,
                        "maxPoints": 20
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/data-europa-mqa/health": {
      "get": {
        "tags": [
          "connector:data-europa-mqa"
        ],
        "operationId": "get_api_connectors_data_europa_mqa_health",
        "summary": "GET /api/connectors/data-europa-mqa/health (#3256).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-mqa/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-europa-mqa/report": {
      "get": {
        "tags": [
          "connector:data-europa-mqa"
        ],
        "operationId": "get_api_connectors_data_europa_mqa_report",
        "summary": "GET /api/connectors/data-europa-mqa/report?datasetId={id} (#3256).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-mqa/report/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "datasetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Dataset-ID for kvalitetsrapport",
            "example": "https-resource-api-fellesdatakatalog-digdir-no-v1-union-graphs-3658f833-1ddf-4efc-85a0-844b53f64f3a-oai-pmh-records-0d56ad96-5a51-32d6-93a1-ef5305ab5751"
          }
        ]
      }
    },
    "/api/connectors/data-europa-mqa/summary": {
      "get": {
        "tags": [
          "connector:data-europa-mqa"
        ],
        "operationId": "get_api_connectors_data_europa_mqa_summary",
        "summary": "GET /api/connectors/data-europa-mqa/summary (#3256).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-mqa/summary/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-europa-sparql/health": {
      "get": {
        "tags": [
          "connector:data-europa-sparql"
        ],
        "operationId": "get_api_connectors_data_europa_sparql_health",
        "summary": "GET /api/connectors/data-europa-sparql/health (#3255, #3076).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-sparql/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-europa-sparql/query": {
      "get": {
        "tags": [
          "connector:data-europa-sparql"
        ],
        "operationId": "get_api_connectors_data_europa_sparql_query",
        "summary": "/api/connectors/data-europa-sparql/query (#3255).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-sparql/query/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SPARQL-spørring",
            "example": "SELECT * WHERE { ?s ?p ?o } LIMIT 1"
          }
        ]
      },
      "post": {
        "tags": [
          "connector:data-europa-sparql"
        ],
        "operationId": "post_api_connectors_data_europa_sparql_query",
        "summary": "/api/connectors/data-europa-sparql/query (#3255).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-europa-sparql/query/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SPARQL-spørring",
            "example": "SELECT * WHERE { ?s ?p ?o } LIMIT 1"
          }
        ]
      }
    },
    "/api/connectors/data-norge/datasets": {
      "get": {
        "tags": [
          "connector:data-norge"
        ],
        "operationId": "get_api_connectors_data_norge_datasets",
        "summary": "GET /api/connectors/data-norge/datasets?q=miljo&rows=20&start=0 Søk i åpne datasett fra data.norge.n",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-norge/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataNorgeDatasets",
                  "additionalProperties": false,
                  "description": "Datasett-treff fra Felles datakatalog (data.norge.no): navn, beskrivelse, organisasjon, lisens, formater og tagger.",
                  "required": [
                    "data",
                    "total",
                    "start"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "licenseId",
                          "numResources",
                          "formats",
                          "tags",
                          "modifiedAt",
                          "createdAt"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "abc-123"
                          },
                          "name": {
                            "type": "string",
                            "example": "befolkning-2024"
                          },
                          "title": {
                            "type": "string",
                            "example": "Befolkning per kommune 2024"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Statistisk sentralbyrå"
                          },
                          "licenseId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NLOD"
                          },
                          "numResources": {
                            "type": "integer",
                            "example": 3
                          },
                          "formats": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "CSV",
                              "JSON"
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "befolkning",
                              "kommune"
                            ]
                          },
                          "modifiedAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-10"
                          },
                          "createdAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-02-01"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Totalt antall treff (null ved cache-hit/stale).",
                      "example": 120
                    },
                    "start": {
                      "type": "integer",
                      "description": "Offset (echo).",
                      "example": 0
                    }
                  },
                  "example": {
                    "data": [
                      {
                        "id": "abc-123",
                        "name": "befolkning-2024",
                        "title": "Befolkning per kommune 2024",
                        "description": "Folketall per kommune.",
                        "organization": "Statistisk sentralbyrå",
                        "licenseId": "NLOD",
                        "numResources": 3,
                        "formats": [
                          "CSV",
                          "JSON"
                        ],
                        "tags": [
                          "befolkning",
                          "kommune"
                        ],
                        "modifiedAt": "2025-01-10",
                        "createdAt": "2024-02-01"
                      }
                    ],
                    "total": 120,
                    "start": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-norge/datasets/{id}": {
      "get": {
        "tags": [
          "connector:data-norge"
        ],
        "operationId": "get_api_connectors_data_norge_datasets__id_",
        "summary": "GET /api/connectors/data-norge/datasets/:id Henter ett datasett (DCAT-AP-NO v1) normalisert til Cano",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-norge/datasets/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataNorgeDataset",
                  "additionalProperties": false,
                  "description": "Ett normalisert datasett (DCAT-AP-NO v1) med nedlastningslenker (distributions) fra data.norge.no.",
                  "required": [
                    "id",
                    "title",
                    "description",
                    "publisher",
                    "publisherOrgNr",
                    "theme",
                    "license",
                    "updateFrequency",
                    "formats",
                    "distributions",
                    "updatedAt",
                    "tags"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Datasett-id (faller tilbake til `uri` hvis `id` mangler upstream). Tom streng hvis ingen.",
                      "example": "a1b2c3d4-1234-5678-9abc-def012345678"
                    },
                    "title": {
                      "type": "string",
                      "description": "Tittel valgt fra DCAT språk-map (nb/no/nn/en). Tom streng hvis ingen.",
                      "example": "Konkursregisteret"
                    },
                    "description": {
                      "type": "string",
                      "description": "Beskrivelse valgt fra DCAT språk-map. Tom streng hvis ingen.",
                      "example": "Datasett med konkursvedtak registrert i Brønnøysundregistrene."
                    },
                    "publisher": {
                      "type": "string",
                      "description": "Navn på utgiver (`publisher.name`). Tom streng hvis ingen.",
                      "example": "Brønnøysundregistrene"
                    },
                    "publisherOrgNr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Utgivers organisasjonsnummer, ellers `publisher.id`. Null hvis ingen.",
                      "example": "974760673"
                    },
                    "theme": {
                      "type": "array",
                      "description": "DCAT-temaer (code, ellers uri). Tom liste hvis ingen.",
                      "items": {
                        "type": "string",
                        "example": "GOVE"
                      }
                    },
                    "license": {
                      "type": "string",
                      "description": "Lisens (`license.code`, ellers `license.uri`, ellers ren streng). Tom streng hvis ingen.",
                      "example": "NLOD"
                    },
                    "updateFrequency": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Oppdateringsfrekvens (`accrualPeriodicity`). Null hvis ikke oppgitt.",
                      "example": "ANNUAL"
                    },
                    "formats": {
                      "type": "array",
                      "description": "Unike, store-bokstav-formater utledet fra distribusjonene. Tom liste hvis ingen.",
                      "items": {
                        "type": "string",
                        "example": "CSV"
                      }
                    },
                    "distributions": {
                      "type": "array",
                      "description": "Nedlastnings-/tilgangslenker per distribusjon. Tom liste hvis ingen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "format",
                          "url",
                          "mediaType"
                        ],
                        "description": "Én distribusjon — første verdi plukkes hvis upstream gir array.",
                        "properties": {
                          "format": {
                            "type": "string",
                            "description": "Format (`distribution.format`, første verdi). Tom streng hvis ingen.",
                            "example": "CSV"
                          },
                          "url": {
                            "type": "string",
                            "description": "Nedlastnings-URL (`downloadURL`, ellers `accessURL`). Tom streng hvis ingen.",
                            "example": "https://data.brreg.no/konkurs/dataset.csv"
                          },
                          "mediaType": {
                            "type": "string",
                            "description": "IANA media-type (`distribution.mediaType`, første verdi). Tom streng hvis ingen.",
                            "example": "text/csv"
                          }
                        }
                      }
                    },
                    "updatedAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret (`modified`, ellers `harvest.modified`). Null hvis ukjent.",
                      "example": "2025-03-14T09:00:00Z"
                    },
                    "tags": {
                      "type": "array",
                      "description": "Nøkkelord (`keyword`) valgt fra språk-map. Tom liste hvis ingen.",
                      "items": {
                        "type": "string",
                        "example": "konkurs"
                      }
                    }
                  },
                  "example": {
                    "id": "a1b2c3d4-1234-5678-9abc-def012345678",
                    "title": "Konkursregisteret",
                    "description": "Datasett med konkursvedtak registrert i Brønnøysundregistrene.",
                    "publisher": "Brønnøysundregistrene",
                    "publisherOrgNr": "974760673",
                    "theme": [
                      "GOVE"
                    ],
                    "license": "NLOD",
                    "updateFrequency": "ANNUAL",
                    "formats": [
                      "CSV",
                      "JSON"
                    ],
                    "distributions": [
                      {
                        "format": "CSV",
                        "url": "https://data.brreg.no/konkurs/dataset.csv",
                        "mediaType": "text/csv"
                      }
                    ],
                    "updatedAt": "2025-03-14T09:00:00Z",
                    "tags": [
                      "konkurs",
                      "register"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/data-norge/health": {
      "get": {
        "tags": [
          "connector:data-norge"
        ],
        "operationId": "get_api_connectors_data_norge_health",
        "summary": "GET /api/connectors/data-norge/health Deep probe for data.norge.no / Fellesdatakatalog (#2735, #3077",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-norge/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/data-norge/organizations": {
      "get": {
        "tags": [
          "connector:data-norge"
        ],
        "operationId": "get_api_connectors_data_norge_organizations",
        "summary": "GET /api/connectors/data-norge/organizations Lister offentlige organisasjoner fra FDK-organisasjonsk",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/data-norge/organizations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dataportal-se/dataset/{id}": {
      "get": {
        "tags": [
          "connector:dataportal-se"
        ],
        "operationId": "get_api_connectors_dataportal_se_dataset__id_",
        "summary": "GET /api/connectors/dataportal-se/dataset/[id] (#1202).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dataportal-se/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataportalSeDataset",
                  "additionalProperties": false,
                  "description": "Normalisert datasett-detalj fra Sveriges dataportal (CKAN package_show). Skalar-felt er nullbare; tags og resources er alltid lister (tomme ved fravær).",
                  "required": [
                    "id",
                    "name",
                    "title",
                    "description",
                    "organization",
                    "license",
                    "modified",
                    "created",
                    "tags",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-pakke-id (UUID). Null hvis utelatt av upstream.",
                      "example": "a1b2c3d4-0000-1111-2222-333344445555"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-slug (URL-vennlig navn).",
                      "example": "befolkningsstatistik-kommuner"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Menneskelesbar tittel.",
                      "example": "Befolkningsstatistik per kommun"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Beskrivelse (CKAN `notes`).",
                      "example": "Årlig befolkningsstatistik fördelad på Sveriges kommuner."
                    },
                    "organization": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Utgivende organisasjon (CKAN `organization.title`, ellers `name`).",
                      "example": "Statistiska centralbyrån"
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lisens-tittel (CKAN `license_title`).",
                      "example": "Creative Commons CC0"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret (CKAN `metadata_modified`, ISO-8601).",
                      "example": "2025-03-01T09:12:00.000000"
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opprettet (CKAN `metadata_created`, ISO-8601).",
                      "example": "2020-01-15T08:00:00.000000"
                    },
                    "tags": {
                      "type": "array",
                      "description": "Emneord (CKAN tag-navn). Tom liste ved ingen tags.",
                      "items": {
                        "type": "string",
                        "example": "befolkning"
                      }
                    },
                    "resources": {
                      "type": "array",
                      "description": "Distribusjoner/filer knyttet til datasettet. Tom liste ved ingen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "format",
                          "url"
                        ],
                        "description": "Én ressurs (distribusjon). Alle felt er nullbare.",
                        "properties": {
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressursnavn.",
                            "example": "Befolkning 2024 (CSV)"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Filformat (CKAN `format`).",
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Nedlastings-URL.",
                            "example": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "a1b2c3d4-0000-1111-2222-333344445555",
                    "name": "befolkningsstatistik-kommuner",
                    "title": "Befolkningsstatistik per kommun",
                    "description": "Årlig befolkningsstatistik fördelad på Sveriges kommuner.",
                    "organization": "Statistiska centralbyrån",
                    "license": "Creative Commons CC0",
                    "modified": "2025-03-01T09:12:00.000000",
                    "created": "2020-01-15T08:00:00.000000",
                    "tags": [
                      "befolkning",
                      "kommun"
                    ],
                    "resources": [
                      {
                        "name": "Befolkning 2024 (CSV)",
                        "format": "CSV",
                        "url": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/dataportal-se/health": {
      "get": {
        "tags": [
          "connector:dataportal-se"
        ],
        "operationId": "get_api_connectors_dataportal_se_health",
        "summary": "GET /api/connectors/dataportal-se/health Deep probe for Sveriges dataportal (#2631, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dataportal-se/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dataportal-se/organisations": {
      "get": {
        "tags": [
          "connector:dataportal-se"
        ],
        "operationId": "get_api_connectors_dataportal_se_organisations",
        "summary": "GET /api/connectors/dataportal-se/organisations (#1202).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dataportal-se/organisations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataportalSeOrganisations",
                  "additionalProperties": false,
                  "description": "Alle utgivende organisasjoner i Sveriges dataportal (CKAN organization_list) — som slug-strenger.",
                  "required": [
                    "organisations"
                  ],
                  "properties": {
                    "organisations": {
                      "type": "array",
                      "description": "Organisasjons-slugs (tom liste ved ingen treff).",
                      "items": {
                        "type": "string",
                        "description": "CKAN-organisasjons-slug.",
                        "example": "statistiska-centralbyran"
                      }
                    }
                  },
                  "example": {
                    "organisations": [
                      "statistiska-centralbyran",
                      "naturvardsverket",
                      "trafikverket"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dataportal-se/search": {
      "get": {
        "tags": [
          "connector:dataportal-se"
        ],
        "operationId": "get_api_connectors_dataportal_se_search",
        "summary": "GET /api/connectors/dataportal-se/search?q=&rows=&start= (#1202).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dataportal-se/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDataportalSeSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søk mot Sveriges dataportal (CKAN package_search). `count` er totalt antall treff; `datasets` er gjeldende side.",
                  "required": [
                    "datasets",
                    "count",
                    "rows",
                    "start"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall treff (over alle sider).",
                      "example": 342
                    },
                    "rows": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Sidestørrelse (antall datasett i denne responsen).",
                      "example": 20
                    },
                    "start": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Offset for denne siden (0-basert).",
                      "example": 0
                    },
                    "datasets": {
                      "type": "array",
                      "description": "Datasett på gjeldende side (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Normalisert datasett (`NormalizedDataset`). Skalar-felt er nullbare; tags/resources er alltid lister.",
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "license",
                          "modified",
                          "created",
                          "tags",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "a1b2c3d4-0000-1111-2222-333344445555"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "CKAN-slug.",
                            "example": "befolkningsstatistik-kommuner"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Befolkningsstatistik per kommun"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "CKAN `notes`.",
                            "example": "Årlig befolkningsstatistik per kommun."
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Statistiska centralbyrån"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Creative Commons CC0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "CKAN `metadata_modified` (ISO-8601).",
                            "example": "2025-03-01T09:12:00.000000"
                          },
                          "created": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "CKAN `metadata_created` (ISO-8601).",
                            "example": "2020-01-15T08:00:00.000000"
                          },
                          "tags": {
                            "type": "array",
                            "description": "Emneord. Tom liste ved ingen.",
                            "items": {
                              "type": "string",
                              "example": "befolkning"
                            }
                          },
                          "resources": {
                            "type": "array",
                            "description": "Distribusjoner/filer. Tom liste ved ingen.",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "name",
                                "format",
                                "url"
                              ],
                              "description": "Én ressurs. Alle felt nullbare.",
                              "properties": {
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "Befolkning 2024 (CSV)"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "count": 342,
                    "rows": 20,
                    "start": 0,
                    "datasets": [
                      {
                        "id": "a1b2c3d4-0000-1111-2222-333344445555",
                        "name": "befolkningsstatistik-kommuner",
                        "title": "Befolkningsstatistik per kommun",
                        "description": "Årlig befolkningsstatistik per kommun.",
                        "organization": "Statistiska centralbyrån",
                        "license": "Creative Commons CC0",
                        "modified": "2025-03-01T09:12:00.000000",
                        "created": "2020-01-15T08:00:00.000000",
                        "tags": [
                          "befolkning",
                          "kommun"
                        ],
                        "resources": [
                          {
                            "name": "Befolkning 2024 (CSV)",
                            "format": "CSV",
                            "url": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/datavejviser-ckan/dataset/{id}": {
      "get": {
        "tags": [
          "connector:datavejviser-ckan"
        ],
        "operationId": "get_api_connectors_datavejviser_ckan_dataset__id_",
        "summary": "GET /api/connectors/datavejviser-ckan/dataset/[id] (#1201).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/datavejviser-ckan/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDatavejviserCkanDataset",
                  "additionalProperties": false,
                  "description": "Normalisert datasett fra Danmarks nasjonale datakatalog (Datavejviser, CKAN v3 action-API). CC0, ingen auth.",
                  "required": [
                    "id",
                    "name",
                    "title",
                    "description",
                    "organization",
                    "license",
                    "modified",
                    "created",
                    "tags",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN package-id (UUID el. slug). Null hvis upstream mangler.",
                      "example": "1a2b3c4d-5e6f-7890-abcd-1234567890ef"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN package-slug (URL-vennlig navn).",
                      "example": "befolkning-pr-kommune"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Menneskelesbar tittel.",
                      "example": "Befolkning pr. kommune"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Datasettbeskrivelse (CKAN `notes`).",
                      "example": "Antal indbyggere fordelt på kommune, opdateret årligt."
                    },
                    "organization": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Eierorganisasjon — CKAN `organization.title`, ellers `organization.name`, ellers null.",
                      "example": "Danmarks Statistik"
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lisens-tittel (CKAN `license_title`).",
                      "example": "Creative Commons CCZero"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret-tidspunkt (CKAN `metadata_modified`, ISO-8601).",
                      "example": "2026-05-01T09:30:00.000000"
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opprettet-tidspunkt (CKAN `metadata_created`, ISO-8601).",
                      "example": "2024-01-15T12:00:00.000000"
                    },
                    "tags": {
                      "type": "array",
                      "description": "Emneord (CKAN-tag-navn, tomme/manglende filtrert bort). Alltid array.",
                      "items": {
                        "type": "string",
                        "example": "befolkning"
                      }
                    },
                    "resources": {
                      "type": "array",
                      "description": "Distribusjoner/filer tilknyttet datasettet. Alltid array (tom ved fravær).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "format",
                          "url"
                        ],
                        "description": "Én CKAN-ressurs. Alle felt nullbare.",
                        "properties": {
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressursnavn.",
                            "example": "befolkning-2026.csv"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Filformat slik CKAN oppgir det.",
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Nedlastings-URL.",
                            "example": "https://datavejviser-ckan.digst.govcloud.dk/dataset/.../download/befolkning-2026.csv"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "1a2b3c4d-5e6f-7890-abcd-1234567890ef",
                    "name": "befolkning-pr-kommune",
                    "title": "Befolkning pr. kommune",
                    "description": "Antal indbyggere fordelt på kommune, opdateret årligt.",
                    "organization": "Danmarks Statistik",
                    "license": "Creative Commons CCZero",
                    "modified": "2026-05-01T09:30:00.000000",
                    "created": "2024-01-15T12:00:00.000000",
                    "tags": [
                      "befolkning",
                      "kommune"
                    ],
                    "resources": [
                      {
                        "name": "befolkning-2026.csv",
                        "format": "CSV",
                        "url": "https://datavejviser-ckan.digst.govcloud.dk/dataset/.../download/befolkning-2026.csv"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/datavejviser-ckan/health": {
      "get": {
        "tags": [
          "connector:datavejviser-ckan"
        ],
        "operationId": "get_api_connectors_datavejviser_ckan_health",
        "summary": "GET /api/connectors/datavejviser-ckan/health (#1201).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/datavejviser-ckan/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/datavejviser-ckan/organisations": {
      "get": {
        "tags": [
          "connector:datavejviser-ckan"
        ],
        "operationId": "get_api_connectors_datavejviser_ckan_organisations",
        "summary": "GET /api/connectors/datavejviser-ckan/organisations (#1201).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/datavejviser-ckan/organisations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanOrganisations",
                  "additionalProperties": false,
                  "description": "Liste over organisasjons-slugs/navn i et CKAN-register (fra `organization_list`).",
                  "required": [
                    "organisations"
                  ],
                  "properties": {
                    "organisations": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "ilmatieteen-laitos",
                        "tilastokeskus"
                      ]
                    }
                  },
                  "example": {
                    "organisations": [
                      "ilmatieteen-laitos",
                      "tilastokeskus"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/datavejviser-ckan/search": {
      "get": {
        "tags": [
          "connector:datavejviser-ckan"
        ],
        "operationId": "get_api_connectors_datavejviser_ckan_search",
        "summary": "GET /api/connectors/datavejviser-ckan/search?q=&rows=&start= (#1201).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/datavejviser-ckan/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanDatasetSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søkeside fra et CKAN-basert åpen-data-register. Hvert datasett har organisasjon, lisens, tagger og ressurser (distribusjoner).",
                  "required": [
                    "datasets",
                    "count",
                    "rows",
                    "start"
                  ],
                  "properties": {
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "license",
                          "modified",
                          "created",
                          "tags",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "abc-123"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "vaerdata-2024"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Værdata 2024"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Ilmatieteen laitos"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CC-BY-4.0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-10"
                          },
                          "created": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-02-01"
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "vær",
                              "klima"
                            ]
                          },
                          "resources": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "name",
                                "format",
                                "url"
                              ],
                              "properties": {
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV-fil"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://example.org/data.csv"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream.",
                      "example": 120
                    },
                    "rows": {
                      "type": "integer",
                      "description": "Sidestørrelse (limit).",
                      "example": 20
                    },
                    "start": {
                      "type": "integer",
                      "description": "Offset.",
                      "example": 0
                    }
                  },
                  "example": {
                    "datasets": [
                      {
                        "id": "abc-123",
                        "name": "vaerdata-2024",
                        "title": "Værdata 2024",
                        "description": "Observasjoner per stasjon.",
                        "organization": "Ilmatieteen laitos",
                        "license": "CC-BY-4.0",
                        "modified": "2025-01-10",
                        "created": "2024-02-01",
                        "tags": [
                          "vær",
                          "klima"
                        ],
                        "resources": [
                          {
                            "name": "CSV-fil",
                            "format": "CSV",
                            "url": "https://example.org/data.csv"
                          }
                        ]
                      }
                    ],
                    "count": 120,
                    "rows": 20,
                    "start": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng",
            "example": "klima"
          }
        ]
      }
    },
    "/api/connectors/dibk/enterprises": {
      "get": {
        "tags": [
          "connector:dibk"
        ],
        "operationId": "get_api_connectors_dibk_enterprises",
        "summary": "GET /api/connectors/dibk/enterprises Paginert liste over foretak med sentral godkjenning fra DiBK SG",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dibk/enterprises/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dibk/enterprises/{orgnr}": {
      "get": {
        "tags": [
          "connector:dibk"
        ],
        "operationId": "get_api_connectors_dibk_enterprises__orgnr_",
        "summary": "GET /api/connectors/dibk/enterprises/[orgnr] Oppslag på ett foretak med sentral godkjenning fra DiBK",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dibk/enterprises/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDibkEnterprise",
                  "additionalProperties": false,
                  "description": "Sentral godkjenning for ett byggforetak fra DiBK SGregisteret. Alle felt er alltid til stede etter normalisering, men ledd-verdier er nullbare når upstream utelater dem.",
                  "required": [
                    "orgnr",
                    "name",
                    "status",
                    "approvalAreas",
                    "address",
                    "insured",
                    "validFrom",
                    "validTo"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^\\d{9}$",
                      "description": "9-sifret organisasjonsnummer. Utledes fra `approval_certificate`-URL-en når upstream ikke har eget `orgnr`-felt. Null hvis ikke utledbar.",
                      "example": "923609016"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Foretaksnavn slik SGregisteret oppgir det.",
                      "example": "Eksempel Bygg AS"
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Godkjenningsstatus. Enkeltoppslag mapper boolsk `approved` til `\"Godkjent\"`/`\"Ikke godkjent\"`; ellers videreføres status-strengen fra upstream. Null når status mangler.",
                      "example": "Godkjent"
                    },
                    "approvalAreas": {
                      "type": "array",
                      "description": "Godkjenningsområder (funksjon × tiltaksklasse × fagområde). Tom liste hvis ingen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "functionCode",
                          "functionDescription",
                          "approvalClass",
                          "approvalClassDescription",
                          "discipline",
                          "disciplineDescription"
                        ],
                        "description": "Ett godkjenningsområde. Hvert ledd er nullbart når upstream utelater det.",
                        "properties": {
                          "functionCode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Funksjonskode (ansvarsrett-funksjon).",
                            "example": "PRO"
                          },
                          "functionDescription": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Beskrivelse av funksjonen.",
                            "example": "Ansvarlig prosjekterende"
                          },
                          "approvalClass": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Tiltaksklasse.",
                            "example": "2"
                          },
                          "approvalClassDescription": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Beskrivelse av tiltaksklassen.",
                            "example": "Tiltaksklasse 2"
                          },
                          "discipline": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Fagområde-kode.",
                            "example": "BYGG"
                          },
                          "disciplineDescription": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Beskrivelse av fagområdet.",
                            "example": "Bygninger og installasjoner"
                          }
                        }
                      }
                    },
                    "address": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Forretningsadresse (`businessaddress`) fra by-ID-/liste-svaret. Null når upstream ikke oppgir en adresse-blokk, eller når alle ledd er null.",
                      "required": [
                        "line1",
                        "line2",
                        "line3",
                        "line4",
                        "postalCode",
                        "postalTown",
                        "country"
                      ],
                      "properties": {
                        "line1": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "Haslevollen 3"
                        },
                        "line2": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "line3": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "line4": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "postalCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "0579"
                        },
                        "postalTown": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "OSLO"
                        },
                        "country": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "NO"
                        }
                      }
                    },
                    "insured": {
                      "type": [
                        "boolean",
                        "null"
                      ],
                      "description": "Om foretaket har ansvarsforsikring (`additional_terms.liability_insurance`). Null når upstream ikke oppgir boolsk verdi.",
                      "example": true
                    },
                    "validFrom": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Gyldig fra-dato for godkjenningen (slik upstream oppgir den).",
                      "example": "2023-01-01"
                    },
                    "validTo": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Gyldig til-dato for godkjenningen (slik upstream oppgir den).",
                      "example": "2026-01-01"
                    }
                  },
                  "example": {
                    "orgnr": "811600792",
                    "name": "ELTERA AS",
                    "status": "Godkjent",
                    "approvalAreas": [
                      {
                        "functionCode": "PRO",
                        "functionDescription": "Prosjekterende",
                        "approvalClass": "2",
                        "approvalClassDescription": "PBL 2016",
                        "discipline": "PLEDESYS",
                        "disciplineDescription": "Ledesystem"
                      }
                    ],
                    "address": {
                      "line1": "Haslevollen 3",
                      "line2": null,
                      "line3": null,
                      "line4": null,
                      "postalCode": "0579",
                      "postalTown": "OSLO",
                      "country": "NO"
                    },
                    "insured": false,
                    "validFrom": null,
                    "validTo": "2028-11-11"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/dibk/health": {
      "get": {
        "tags": [
          "connector:dibk"
        ],
        "operationId": "get_api_connectors_dibk_health",
        "summary": "GET /api/connectors/dibk/health Deep probe for DIBK SGregisteret (#2726, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dibk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dibk/oppslag": {
      "get": {
        "tags": [
          "connector:dibk"
        ],
        "operationId": "get_api_connectors_dibk_oppslag",
        "summary": "GET /api/connectors/dibk/oppslag",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dibk/oppslag/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer)",
            "example": "811600792"
          }
        ]
      }
    },
    "/api/connectors/dk-aarsrapporter/health": {
      "get": {
        "tags": [
          "connector:dk-aarsrapporter"
        ],
        "operationId": "get_api_connectors_dk_aarsrapporter_health",
        "summary": "GET /api/connectors/dk-aarsrapporter/health Default: statisk status (configured=false når OAuth-cred",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-aarsrapporter/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dk-aarsrapporter/regnskab/{cvr}": {
      "get": {
        "tags": [
          "connector:dk-aarsrapporter"
        ],
        "operationId": "get_api_connectors_dk_aarsrapporter_regnskab__cvr_",
        "summary": "GET /api/connectors/dk-aarsrapporter/regnskab/{cvr} Regnskapsliste (innsendte årsrapporter) for et d",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-aarsrapporter/regnskab/[cvr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDkAarsrapporterRegnskab",
                  "additionalProperties": false,
                  "description": "Regnskapsliste (innsendte årsrapporter) for ett dansk CVR-nummer fra Virk.dk Årsrapporter (Erhvervsstyrelsen). Nyeste regnskap først.",
                  "required": [
                    "cvr",
                    "regnskaper",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "cvr": {
                      "type": "string",
                      "pattern": "^\\d{8}$",
                      "description": "Dansk CVR-nummer (8 siffer) listen gjelder.",
                      "example": "12345678"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "dk-aarsrapporter"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "dk-aarsrapporter"
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO-8601-tidsstempel for når responsen ble bygget.",
                      "example": "2026-06-24T10:15:00.000Z"
                    },
                    "regnskaper": {
                      "type": "array",
                      "description": "Normaliserte årsrapporter, nyeste først (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én normalisert dansk årsrapport — kanonisk, flat form. Beløp i hele DKK.",
                        "required": [
                          "id",
                          "periodeFra",
                          "periodeTil",
                          "omsetning",
                          "resultatFoerSkat",
                          "resultatEfterSkat",
                          "egenkapital",
                          "balansesum",
                          "valuta",
                          "offentliggjortDato"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Regnskaps-id (alfanumerisk med skilletegn).",
                            "example": "2024-001"
                          },
                          "periodeFra": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Regnskapsperiode start, ISO-dato.",
                            "example": "2024-01-01"
                          },
                          "periodeTil": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Regnskapsperiode slutt, ISO-dato.",
                            "example": "2024-12-31"
                          },
                          "omsetning": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Omsetning i hele DKK.",
                            "example": 12500000
                          },
                          "resultatFoerSkat": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Resultat før skatt i hele DKK.",
                            "example": 1800000
                          },
                          "resultatEfterSkat": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Resultat etter skatt i hele DKK.",
                            "example": 1400000
                          },
                          "egenkapital": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Egenkapital i hele DKK.",
                            "example": 5200000
                          },
                          "balansesum": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Balansesum i hele DKK.",
                            "example": 9800000
                          },
                          "valuta": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Rapporteringsvaluta (ISO 4217).",
                            "example": "DKK"
                          },
                          "offentliggjortDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Offentliggjøringsdato for årsrapporten, ISO-dato.",
                            "example": "2025-05-30"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "cvr": "12345678",
                    "source": "dk-aarsrapporter",
                    "fetchedAt": "2026-06-24T10:15:00.000Z",
                    "regnskaper": [
                      {
                        "id": "2024-001",
                        "periodeFra": "2024-01-01",
                        "periodeTil": "2024-12-31",
                        "omsetning": 12500000,
                        "resultatFoerSkat": 1800000,
                        "resultatEfterSkat": 1400000,
                        "egenkapital": 5200000,
                        "balansesum": 9800000,
                        "valuta": "DKK",
                        "offentliggjortDato": "2025-05-30"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cvr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `cvr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/dk-aarsrapporter/regnskab/{cvr}/{regnskabsId}": {
      "get": {
        "tags": [
          "connector:dk-aarsrapporter"
        ],
        "operationId": "get_api_connectors_dk_aarsrapporter_regnskab__cvr___regnskabsId_",
        "summary": "GET /api/connectors/dk-aarsrapporter/regnskab/{cvr}/{regnskabsId} Enkelt årsrapport (omsetning, resu",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-aarsrapporter/regnskab/[cvr]/[regnskabsId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDkAarsrapporterReport",
                  "additionalProperties": false,
                  "description": "Ett dansk årsregnskap (årsrapport) for et CVR-nummer, med utvalgte nøkkelstørrelser (omsetning, resultat før/etter skatt, egenkapital, balansesum).",
                  "required": [
                    "cvr",
                    "source",
                    "fetchedAt",
                    "regnskab"
                  ],
                  "properties": {
                    "cvr": {
                      "type": "string",
                      "example": "12345674"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "dk-aarsrapporter"
                      ]
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    },
                    "regnskab": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "periodeFra",
                        "periodeTil",
                        "omsetning",
                        "resultatFoerSkat",
                        "resultatEfterSkat",
                        "egenkapital",
                        "balansesum",
                        "valuta",
                        "offentliggjortDato"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "abc123"
                        },
                        "periodeFra": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "2024-01-01"
                        },
                        "periodeTil": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "2024-12-31"
                        },
                        "omsetning": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 5000000
                        },
                        "resultatFoerSkat": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 600000
                        },
                        "resultatEfterSkat": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 468000
                        },
                        "egenkapital": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 2400000
                        },
                        "balansesum": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 8000000
                        },
                        "valuta": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "DKK"
                        },
                        "offentliggjortDato": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "2025-05-30"
                        }
                      }
                    }
                  },
                  "example": {
                    "cvr": "12345674",
                    "source": "dk-aarsrapporter",
                    "fetchedAt": "2026-07-03T09:15:00.000Z",
                    "regnskab": {
                      "id": "abc123",
                      "periodeFra": "2024-01-01",
                      "periodeTil": "2024-12-31",
                      "omsetning": 5000000,
                      "resultatFoerSkat": 600000,
                      "resultatEfterSkat": 468000,
                      "egenkapital": 2400000,
                      "balansesum": 8000000,
                      "valuta": "DKK",
                      "offentliggjortDato": "2025-05-30"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cvr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `cvr` — se connector-dokumentasjon for format."
          },
          {
            "name": "regnskabsId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `regnskabsId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/dk-statbank/health": {
      "get": {
        "tags": [
          "connector:dk-statbank"
        ],
        "operationId": "get_api_connectors_dk_statbank_health",
        "summary": "GET /api/connectors/dk-statbank/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-statbank/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dk-statbank/tables": {
      "get": {
        "tags": [
          "connector:dk-statbank"
        ],
        "operationId": "get_api_connectors_dk_statbank_tables",
        "summary": "GET /api/connectors/dk-statbank/tables Liste over alle tilgjengelige tabeller fra Danmarks Statistik",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-statbank/tables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dk-statbank/tables/{id}/data": {
      "post": {
        "tags": [
          "connector:dk-statbank"
        ],
        "operationId": "post_api_connectors_dk_statbank_tables__id__data",
        "summary": "POST /api/connectors/dk-statbank/tables/[id]/data Data-uttrekk fra Danmarks Statistik StatBank.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-statbank/tables/[id]/data/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/dk-statbank/tables/{id}/metadata": {
      "get": {
        "tags": [
          "connector:dk-statbank"
        ],
        "operationId": "get_api_connectors_dk_statbank_tables__id__metadata",
        "summary": "GET /api/connectors/dk-statbank/tables/[id]/metadata Tabell-metadata (dimensjoner, kategorier, tilgj",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-statbank/tables/[id]/metadata/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDkStatbankTableMetadata",
                  "additionalProperties": false,
                  "description": "Metadata for én StatBank-tabell (Danmarks Statistik): tittel, enhet, periode- dekning og variabler (dimensjoner) med sine verdier. Brukes til å bygge gyldige data-uttrekk.",
                  "required": [
                    "id",
                    "text",
                    "description",
                    "unit",
                    "updated",
                    "firstPeriod",
                    "latestPeriod",
                    "variables"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "FOLK1A"
                    },
                    "text": {
                      "type": "string",
                      "example": "Folketal den 1. i kvartalet"
                    },
                    "description": {
                      "type": "string"
                    },
                    "unit": {
                      "type": "string",
                      "example": "antal"
                    },
                    "updated": {
                      "type": "string",
                      "example": "2025-05-12T08:00:00"
                    },
                    "firstPeriod": {
                      "type": "string",
                      "example": "2008K1"
                    },
                    "latestPeriod": {
                      "type": "string",
                      "example": "2025K2"
                    },
                    "variables": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "text",
                          "elimination",
                          "time",
                          "values"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "OMRÅDE"
                          },
                          "text": {
                            "type": "string",
                            "example": "område"
                          },
                          "elimination": {
                            "type": "boolean",
                            "example": true
                          },
                          "time": {
                            "type": "boolean",
                            "example": false
                          },
                          "values": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "id",
                                "text"
                              ],
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "example": "000"
                                },
                                "text": {
                                  "type": "string",
                                  "example": "Hele landet"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "FOLK1A",
                    "text": "Folketal den 1. i kvartalet",
                    "description": "",
                    "unit": "antal",
                    "updated": "2025-05-12T08:00:00",
                    "firstPeriod": "2008K1",
                    "latestPeriod": "2025K2",
                    "variables": [
                      {
                        "id": "OMRÅDE",
                        "text": "område",
                        "elimination": true,
                        "time": false,
                        "values": [
                          {
                            "id": "000",
                            "text": "Hele landet"
                          }
                        ]
                      },
                      {
                        "id": "Tid",
                        "text": "tid",
                        "elimination": false,
                        "time": true,
                        "values": [
                          {
                            "id": "2025K2",
                            "text": "2025K2"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/dk-udbud/health": {
      "get": {
        "tags": [
          "connector:dk-udbud"
        ],
        "operationId": "get_api_connectors_dk_udbud_health",
        "summary": "GET /api/connectors/dk-udbud/health Smoke-route for DK udbud-connector.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-udbud/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dk-udbud/notices": {
      "get": {
        "tags": [
          "connector:dk-udbud"
        ],
        "operationId": "get_api_connectors_dk_udbud_notices",
        "summary": "GET /api/connectors/dk-udbud/notices — DK offentlige anskaffelser (#748) Query-params: since?   ISO ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dk-udbud/notices/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDkUdbudNotices",
                  "additionalProperties": false,
                  "description": "Paginert liste over danske anskaffelsesvarsler (udbud). Kjøper (CVR), CPV-koder og estimert verdi per varsel.",
                  "required": [
                    "notices",
                    "total",
                    "offset",
                    "limit"
                  ],
                  "properties": {
                    "notices": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "noticeId",
                          "noticeVersion",
                          "publicationNumber",
                          "sourceCountry",
                          "source",
                          "dataSource",
                          "status",
                          "title",
                          "description",
                          "buyer",
                          "cpvCodes",
                          "estimatedValue",
                          "registeredAt",
                          "publishedAt",
                          "noticeType"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "dk_udbud:12345:1"
                          },
                          "noticeId": {
                            "type": "string",
                            "example": "12345"
                          },
                          "noticeVersion": {
                            "type": "string",
                            "example": "1"
                          },
                          "publicationNumber": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025/S 123-456"
                          },
                          "sourceCountry": {
                            "type": "string",
                            "enum": [
                              "DK"
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "dk_udbud"
                            ]
                          },
                          "dataSource": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "active"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "IT-konsulentydelser"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "buyer": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "required": [
                              "name",
                              "cvr",
                              "country"
                            ],
                            "properties": {
                              "name": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Københavns Kommune"
                              },
                              "cvr": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "64942212"
                              },
                              "country": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "DK"
                              }
                            }
                          },
                          "cpvCodes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "72000000"
                            ]
                          },
                          "estimatedValue": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "required": [
                              "amount",
                              "currency"
                            ],
                            "properties": {
                              "amount": {
                                "type": "number",
                                "example": 5000000
                              },
                              "currency": {
                                "type": "string",
                                "example": "DKK"
                              }
                            }
                          },
                          "registeredAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-04-01"
                          },
                          "publishedAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-04-02"
                          },
                          "noticeType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Udbudsbekendtgørelse"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 240
                    },
                    "offset": {
                      "type": "integer",
                      "example": 0
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    }
                  },
                  "example": {
                    "notices": [
                      {
                        "id": "dk_udbud:12345:1",
                        "noticeId": "12345",
                        "noticeVersion": "1",
                        "publicationNumber": "2025/S 123-456",
                        "sourceCountry": "DK",
                        "source": "dk_udbud",
                        "dataSource": "TED",
                        "status": "active",
                        "title": "IT-konsulentydelser",
                        "description": "Rammeaftale.",
                        "buyer": {
                          "name": "Københavns Kommune",
                          "cvr": "64942212",
                          "country": "DK"
                        },
                        "cpvCodes": [
                          "72000000"
                        ],
                        "estimatedValue": {
                          "amount": 5000000,
                          "currency": "DKK"
                        },
                        "registeredAt": "2025-04-01",
                        "publishedAt": "2025-04-02",
                        "noticeType": "Udbudsbekendtgørelse"
                      }
                    ],
                    "total": 240,
                    "offset": 0,
                    "limit": 20
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dmi/climate": {
      "get": {
        "tags": [
          "connector:dmi"
        ],
        "operationId": "get_api_connectors_dmi_climate",
        "summary": "GET /api/connectors/dmi/climate",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dmi/climate/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "parameterId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Parameter-ID",
            "example": "mean_temp"
          },
          {
            "name": "stationId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "DMI stasjons-ID",
            "example": "06180"
          }
        ]
      }
    },
    "/api/connectors/dmi/health": {
      "get": {
        "tags": [
          "connector:dmi"
        ],
        "operationId": "get_api_connectors_dmi_health",
        "summary": "GET /api/connectors/dmi/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dmi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dmi/observations": {
      "get": {
        "tags": [
          "connector:dmi"
        ],
        "operationId": "get_api_connectors_dmi_observations",
        "summary": "GET /api/connectors/dmi/observations",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dmi/observations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDmiObservations",
                  "additionalProperties": false,
                  "description": "Målingsobservasjoner fra DMI: verdi per stasjon/parameter/tidspunkt.",
                  "required": [
                    "observations"
                  ],
                  "properties": {
                    "observations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "stationId",
                          "parameterId",
                          "obsTime",
                          "value"
                        ],
                        "properties": {
                          "stationId": {
                            "type": "string",
                            "example": "06180"
                          },
                          "parameterId": {
                            "type": "string",
                            "example": "temp_dry"
                          },
                          "obsTime": {
                            "type": "string",
                            "example": "2026-07-03T09:00:00Z"
                          },
                          "value": {
                            "type": "number",
                            "example": 18.4
                          },
                          "unit": {
                            "type": "string",
                            "example": "celsius"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "observations": [
                      {
                        "stationId": "06180",
                        "parameterId": "temp_dry",
                        "obsTime": "2026-07-03T09:00:00Z",
                        "value": 18.4,
                        "unit": "celsius"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "parameterId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Parameter-ID (f.eks. temp_dry)",
            "example": "temp_dry"
          },
          {
            "name": "stationId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "DMI stasjons-ID",
            "example": "06180"
          }
        ]
      }
    },
    "/api/connectors/dmi/stations": {
      "get": {
        "tags": [
          "connector:dmi"
        ],
        "operationId": "get_api_connectors_dmi_stations",
        "summary": "GET /api/connectors/dmi/stations",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dmi/stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDmiStations",
                  "additionalProperties": false,
                  "description": "Målestasjoner fra DMI med posisjon (GeoJSON Point) og hvilke parametere de måler.",
                  "required": [
                    "stations"
                  ],
                  "properties": {
                    "stations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "stationId",
                          "name",
                          "country",
                          "location",
                          "parameterId"
                        ],
                        "properties": {
                          "stationId": {
                            "type": "string",
                            "example": "06180"
                          },
                          "name": {
                            "type": "string",
                            "example": "København Lufthavn"
                          },
                          "country": {
                            "type": "string",
                            "example": "DNK"
                          },
                          "location": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "type",
                              "coordinates"
                            ],
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "Point"
                                ]
                              },
                              "coordinates": {
                                "type": "array",
                                "items": {
                                  "type": "number"
                                },
                                "minItems": 2,
                                "maxItems": 2,
                                "description": "[lon, lat]",
                                "example": [
                                  12.6508,
                                  55.618
                                ]
                              }
                            }
                          },
                          "parameterId": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "temp_dry",
                              "wind_speed"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "stations": [
                      {
                        "stationId": "06180",
                        "name": "København Lufthavn",
                        "country": "DNK",
                        "location": {
                          "type": "Point",
                          "coordinates": [
                            12.6508,
                            55.618
                          ]
                        },
                        "parameterId": [
                          "temp_dry",
                          "wind_speed"
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/doffin/health": {
      "get": {
        "tags": [
          "connector:doffin"
        ],
        "operationId": "get_api_connectors_doffin_health",
        "summary": "GET /api/connectors/doffin/health Default: statisk respons fra `handleDoffinHealth` med `configured`",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/doffin/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/doffin/notices": {
      "get": {
        "tags": [
          "connector:doffin"
        ],
        "operationId": "get_api_connectors_doffin_notices",
        "summary": "GET /api/connectors/doffin/notices?...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/doffin/notices/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDoffinNotices",
                  "additionalProperties": false,
                  "description": "Paginert (cursor) liste over norske anskaffelsesvarsler (Doffin). Kjøper, frister, CPV-koder og estimert verdi per varsel.",
                  "required": [
                    "notices"
                  ],
                  "properties": {
                    "notices": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "noticeId",
                          "cpvCodes"
                        ],
                        "properties": {
                          "noticeId": {
                            "type": "string",
                            "example": "2025-123456"
                          },
                          "publicationNumber": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string",
                            "example": "Rammeavtale renhold"
                          },
                          "publishedAt": {
                            "type": "string",
                            "example": "2025-04-01"
                          },
                          "deadlineAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-05-01"
                          },
                          "description": {
                            "type": "string"
                          },
                          "buyer": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "orgnr": {
                                "type": "string",
                                "example": "958935420"
                              },
                              "name": {
                                "type": "string",
                                "example": "Oslo kommune"
                              },
                              "country": {
                                "type": "string",
                                "example": "NO"
                              },
                              "contactEmail": {
                                "type": "string"
                              },
                              "contactPhone": {
                                "type": "string"
                              }
                            }
                          },
                          "cpvCodes": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "example": "90910000"
                                },
                                "description": {
                                  "type": "string",
                                  "example": "Rengjøring"
                                }
                              }
                            }
                          },
                          "estimatedValue": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "lowerBound": {
                                "type": "number"
                              },
                              "upperBound": {
                                "type": "number",
                                "example": 2000000
                              },
                              "currency": {
                                "type": "string",
                                "example": "NOK"
                              }
                            }
                          },
                          "procurementType": {
                            "type": "string"
                          },
                          "noticeType": {
                            "type": "string"
                          },
                          "sourceUrl": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "totalCount": {
                      "type": "integer",
                      "minimum": 0,
                      "example": 340
                    },
                    "nextPageToken": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "example": {
                    "notices": [
                      {
                        "noticeId": "2025-123456",
                        "publicationNumber": "2025/123456",
                        "title": "Rammeavtale renhold",
                        "publishedAt": "2025-04-01",
                        "deadlineAt": "2025-05-01",
                        "description": "Renhold av kommunale bygg.",
                        "buyer": {
                          "orgnr": "958935420",
                          "name": "Oslo kommune",
                          "country": "NO"
                        },
                        "cpvCodes": [
                          {
                            "code": "90910000",
                            "description": "Rengjøring"
                          }
                        ],
                        "estimatedValue": {
                          "upperBound": 2000000,
                          "currency": "NOK"
                        },
                        "procurementType": "Tjenester",
                        "noticeType": "Kunngjøring av konkurranse",
                        "sourceUrl": "https://doffin.no/notices/2025-123456"
                      }
                    ],
                    "totalCount": 340,
                    "nextPageToken": null
                  }
                }
              }
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/doffin/notices/{id}": {
      "get": {
        "tags": [
          "connector:doffin"
        ],
        "operationId": "get_api_connectors_doffin_notices__id_",
        "summary": "GET /api/connectors/doffin/notices/{id} Enkeltoppslag på Doffin-intern noticeId (#427).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/doffin/notices/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDoffinNotice",
                  "additionalProperties": false,
                  "description": "Én norsk offentlig anskaffelseskunngjøring fra Doffin (DFØ APIM), kanonisk normalisert. Felt utenom noticeId/cpvCodes er valgfrie fordi kunngjøringstyper (forhåndsvarsel, konkurransegrunnlag, kontraktstildeling) populerer ulikt.",
                  "required": [
                    "noticeId",
                    "cpvCodes"
                  ],
                  "properties": {
                    "noticeId": {
                      "type": "string",
                      "description": "Doffin-intern notice-ID (oppslagsnøkkel for {id}).",
                      "example": "2024-123456"
                    },
                    "publicationNumber": {
                      "type": "string",
                      "description": "Offisielt publikasjonsnummer.",
                      "example": "2024/S 045-123456"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kunngjøringens tittel.",
                      "example": "Rammeavtale renholdstjenester"
                    },
                    "publishedAt": {
                      "type": "string",
                      "description": "Publiseringstidspunkt (ISO-8601).",
                      "example": "2024-03-01T09:00:00Z"
                    },
                    "deadlineAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tilbudsfrist (ISO-8601). Null når kunngjøringen ikke har frist.",
                      "example": "2024-04-15T12:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Fritekstbeskrivelse av anskaffelsen.",
                      "example": "Renhold av kommunale bygg i fire år med opsjon på forlengelse."
                    },
                    "buyer": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Oppdragsgiver. Alle felt er valgfrie.",
                      "properties": {
                        "orgnr": {
                          "type": "string",
                          "description": "Oppdragsgivers organisasjonsnummer.",
                          "example": "974760673"
                        },
                        "name": {
                          "type": "string",
                          "example": "Oslo kommune"
                        },
                        "country": {
                          "type": "string",
                          "pattern": "^[A-Z]{2}$",
                          "description": "ISO 3166-1 alpha-2 landkode.",
                          "example": "NO"
                        },
                        "contactEmail": {
                          "type": "string",
                          "example": "anskaffelser@oslo.kommune.no"
                        },
                        "contactPhone": {
                          "type": "string",
                          "example": "+47 21 80 21 80"
                        }
                      }
                    },
                    "cpvCodes": {
                      "type": "array",
                      "description": "CPV-koder (Common Procurement Vocabulary). Tom array når ingen er angitt.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én CPV-kode. Begge felt er valgfrie.",
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "CPV-kode.",
                            "example": "90910000"
                          },
                          "description": {
                            "type": "string",
                            "description": "Tekstlig beskrivelse av CPV-koden.",
                            "example": "Renholdstjenester"
                          }
                        }
                      }
                    },
                    "estimatedValue": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Estimert kontraktsverdi som intervall. Alle felt er valgfrie.",
                      "properties": {
                        "lowerBound": {
                          "type": "number",
                          "description": "Nedre estimat.",
                          "example": 1000000
                        },
                        "upperBound": {
                          "type": "number",
                          "description": "Øvre estimat.",
                          "example": 5000000
                        },
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$",
                          "description": "ISO 4217 valutakode.",
                          "example": "NOK"
                        }
                      }
                    },
                    "procurementType": {
                      "type": "string",
                      "description": "Anskaffelsesprosedyre (f.eks. OPEN, RESTRICTED, NEGOTIATED).",
                      "example": "OPEN"
                    },
                    "noticeType": {
                      "type": "string",
                      "description": "Kunngjøringstype (CN=konkurransegrunnlag, PIN=forhåndsvarsel, CAN=kontraktstildeling).",
                      "example": "CN"
                    },
                    "sourceUrl": {
                      "type": "string",
                      "description": "Lenke til kunngjøringen på doffin.no.",
                      "example": "https://doffin.no/notices/2024-123456"
                    }
                  },
                  "example": {
                    "noticeId": "2024-123456",
                    "publicationNumber": "2024/S 045-123456",
                    "title": "Rammeavtale renholdstjenester",
                    "publishedAt": "2024-03-01T09:00:00Z",
                    "deadlineAt": "2024-04-15T12:00:00Z",
                    "description": "Renhold av kommunale bygg i fire år med opsjon på forlengelse.",
                    "buyer": {
                      "orgnr": "974760673",
                      "name": "Oslo kommune",
                      "country": "NO",
                      "contactEmail": "anskaffelser@oslo.kommune.no"
                    },
                    "cpvCodes": [
                      {
                        "code": "90910000",
                        "description": "Renholdstjenester"
                      }
                    ],
                    "estimatedValue": {
                      "lowerBound": 1000000,
                      "upperBound": 5000000,
                      "currency": "NOK"
                    },
                    "procurementType": "OPEN",
                    "noticeType": "CN",
                    "sourceUrl": "https://doffin.no/notices/2024-123456"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ],
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/domstol-se/avgoranden": {
      "get": {
        "tags": [
          "connector:domstol-se"
        ],
        "operationId": "get_api_connectors_domstol_se_avgoranden",
        "summary": "Refs: #2434, #2554 data.domstol.se → NO_DNS (#2554).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/domstol-se/avgoranden/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/domstol-se/avgoranden/{id}": {
      "get": {
        "tags": [
          "connector:domstol-se"
        ],
        "operationId": "get_api_connectors_domstol_se_avgoranden__id_",
        "summary": "Refs: #2435, #2554 data.domstol.se → NO_DNS (#2554).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/domstol-se/avgoranden/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorDomstolSeAvgorande",
                  "additionalProperties": false,
                  "description": "Ett rättsavgörande (domstolsavgjørelse) fra Sveriges Domstolar öppna data. Alle felt er valgfrie — kilden utelater felt som mangler.",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Avgörande-ID (instans:löpenummer:år hos Sveriges Domstolar).",
                      "example": "HD:1:2024"
                    },
                    "rubrik": {
                      "type": "string",
                      "description": "Rubrik / overskrift som oppsummerer avgjørelsen.",
                      "example": "Fråga om beräkning av skadestånd vid avtalsbrott."
                    },
                    "instans": {
                      "type": "string",
                      "description": "Domstolsinstans. Kjente verdier: HD (Högsta domstolen), HFD (Högsta förvaltningsdomstolen), hovratten, forvaltningsratten.",
                      "example": "HD"
                    },
                    "datum": {
                      "type": "string",
                      "description": "Avgjørelsesdato (ISO-8601).",
                      "example": "2024-03-14"
                    },
                    "referat": {
                      "type": "string",
                      "description": "Referattekst / sammendrag av avgjørelsen.",
                      "example": "Högsta domstolen fann att skadeståndet skulle beräknas enligt ..."
                    }
                  },
                  "example": {
                    "id": "HD:1:2024",
                    "rubrik": "Fråga om beräkning av skadestånd vid avtalsbrott.",
                    "instans": "HD",
                    "datum": "2024-03-14",
                    "referat": "Högsta domstolen fann att skadeståndet skulle beräknas enligt ..."
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/domstol-se/health": {
      "get": {
        "tags": [
          "connector:domstol-se"
        ],
        "operationId": "get_api_connectors_domstol_se_health",
        "summary": "GET /api/connectors/domstol-se/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/domstol-se/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/domstol/health": {
      "get": {
        "tags": [
          "connector:domstol"
        ],
        "operationId": "get_api_connectors_domstol_health",
        "summary": "GET /api/connectors/domstol/health api.domstol.no er bekreftet blokkert fra GCP/Firebase cloud-IP-er",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/domstol/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/domstol/statistics": {
      "get": {
        "tags": [
          "connector:domstol"
        ],
        "operationId": "get_api_connectors_domstol_statistics",
        "summary": "GET /api/connectors/domstol/statistics?year=2023&courtType=tingrett Henter saksstatistikk fra Domsto",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/domstol/statistics/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dsb/fire-statistics": {
      "get": {
        "tags": [
          "connector:dsb"
        ],
        "operationId": "get_api_connectors_dsb_fire_statistics",
        "summary": "GET /api/connectors/dsb/fire-statistics?municipality=0301&year=2023 Henter brannstatistikk fra Direk",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dsb/fire-statistics/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/dsb/health": {
      "get": {
        "tags": [
          "connector:dsb"
        ],
        "operationId": "get_api_connectors_dsb_health",
        "summary": "GET /api/connectors/dsb/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/dsb/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eba/credit-institutions": {
      "get": {
        "tags": [
          "connector:eba"
        ],
        "operationId": "get_api_connectors_eba_credit_institutions",
        "summary": "Refs: #2438 registers.eba.europa.eu → NO_DNS.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eba/credit-institutions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eba/emi-institutions": {
      "get": {
        "tags": [
          "connector:eba"
        ],
        "operationId": "get_api_connectors_eba_emi_institutions",
        "summary": "GET /api/connectors/eba/emi-institutions E-pengeinstitusjoner fra EBA Registers (EMD2).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eba/emi-institutions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eba/health": {
      "get": {
        "tags": [
          "connector:eba"
        ],
        "operationId": "get_api_connectors_eba_health",
        "summary": "GET /api/connectors/eba/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eba/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eba/institutions": {
      "get": {
        "tags": [
          "connector:eba"
        ],
        "operationId": "get_api_connectors_eba_institutions",
        "summary": "GET /api/connectors/eba/institutions?register=CRD&country=NO Alle institusjonstyper fra EBA Register",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eba/institutions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eba/payment-institutions": {
      "get": {
        "tags": [
          "connector:eba"
        ],
        "operationId": "get_api_connectors_eba_payment_institutions",
        "summary": "GET /api/connectors/eba/payment-institutions Betalingstjenesteytere fra EBA Registers (PSD2).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eba/payment-institutions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ecb/exchange-rates": {
      "get": {
        "tags": [
          "connector:ecb"
        ],
        "operationId": "get_api_connectors_ecb_exchange_rates",
        "summary": "GET /api/connectors/ecb/exchange-rates",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ecb/exchange-rates/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ecb/health": {
      "get": {
        "tags": [
          "connector:ecb"
        ],
        "operationId": "get_api_connectors_ecb_health",
        "summary": "GET /api/connectors/ecb/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ecb/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ecb/interest-rates": {
      "get": {
        "tags": [
          "connector:ecb"
        ],
        "operationId": "get_api_connectors_ecb_interest_rates",
        "summary": "GET /api/connectors/ecb/interest-rates",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ecb/interest-rates/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/echa/health": {
      "get": {
        "tags": [
          "connector:echa"
        ],
        "operationId": "get_api_connectors_echa_health",
        "summary": "GET /api/connectors/echa/health Default: statisk \"degraded\" siden hazard.echa.europa.eu blokkerer fo",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/echa/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/echa/substances/search": {
      "get": {
        "tags": [
          "connector:echa"
        ],
        "operationId": "get_api_connectors_echa_substances_search",
        "summary": "GET /api/connectors/echa/substances/search?q={name}&pageSize=20&page=0 Søker i ECHA C&L Inventory (E",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/echa/substances/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEchaSubstanceSearch",
                  "additionalProperties": false,
                  "description": "Treffliste fra søk i ECHA C&L Inventory (European Chemicals Agency) — kjemiske stoffer med CLP-klassifisering, SVHC- og REACH-status.",
                  "required": [
                    "substances",
                    "total",
                    "page",
                    "pageSize",
                    "query",
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "echa"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "echa"
                    },
                    "query": {
                      "type": "string",
                      "description": "Søkestrengen som ble brukt (stoff-navn, EC-nummer eller CAS-nummer).",
                      "example": "benzene"
                    },
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall treff oppgitt av ECHA (totalElements/total), eller antall elementer i denne siden hvis ECHA ikke oppgir totalsum.",
                      "example": 1
                    },
                    "page": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Sidenummer (0-basert).",
                      "example": 0
                    },
                    "pageSize": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100,
                      "description": "Antall treff per side (1–100, default 20).",
                      "example": 20
                    },
                    "substances": {
                      "type": "array",
                      "description": "Stofftreff (tom array ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Ett normalisert stoff fra ECHA C&L Inventory.",
                        "required": [
                          "substanceId",
                          "name",
                          "ecNumber",
                          "casNumber",
                          "molecularFormula",
                          "iupacName",
                          "classification",
                          "isAuthorisationRequired",
                          "isRestricted",
                          "isSvhc",
                          "svhcStatus",
                          "source"
                        ],
                        "properties": {
                          "substanceId": {
                            "type": "string",
                            "description": "ECHA intern ID, med fallback til EC-nummer eller CAS-nummer; tom streng hvis ingen av delene finnes.",
                            "example": "100.000.567"
                          },
                          "name": {
                            "type": "string",
                            "description": "Stoffnavn (substanceName); \"Unknown\" hvis ECHA utelater det.",
                            "example": "Benzene"
                          },
                          "ecNumber": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "pattern": "^\\d{3}-\\d{3}-\\d$",
                            "description": "EC-nummer (format XXX-XXX-X); null hvis ukjent.",
                            "example": "200-753-7"
                          },
                          "casNumber": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "CAS Registry Number; null hvis ukjent.",
                            "example": "71-43-2"
                          },
                          "molecularFormula": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Molekylformel; null hvis ukjent.",
                            "example": "C6H6"
                          },
                          "iupacName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "IUPAC-navn; null hvis ukjent.",
                            "example": "benzene"
                          },
                          "classification": {
                            "type": "array",
                            "description": "CLP-fareklassifiseringer (tom array hvis ingen).",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "description": "Én harmonisert CLP-fareklasse.",
                              "required": [
                                "hazardClass",
                                "signalWord",
                                "hPhrases",
                                "ghsPictograms"
                              ],
                              "properties": {
                                "hazardClass": {
                                  "type": "string",
                                  "description": "Fareklasse; \"Unknown\" hvis ECHA utelater den.",
                                  "example": "Carcinogenicity"
                                },
                                "signalWord": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Signalord (Danger/Warning); null hvis ukjent.",
                                  "example": "Danger"
                                },
                                "hPhrases": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "H-fraser (faresetninger).",
                                  "example": [
                                    "H350",
                                    "H340"
                                  ]
                                },
                                "ghsPictograms": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "GHS-piktogramkoder.",
                                  "example": [
                                    "GHS08",
                                    "GHS02"
                                  ]
                                }
                              }
                            }
                          },
                          "isAuthorisationRequired": {
                            "type": "boolean",
                            "description": "Om stoffet krever REACH-autorisasjon.",
                            "example": false
                          },
                          "isRestricted": {
                            "type": "boolean",
                            "description": "Om stoffet er underlagt REACH-restriksjon.",
                            "example": true
                          },
                          "isSvhc": {
                            "type": "boolean",
                            "description": "Avledet flagg — true hvis svhcStatus finnes og ikke er \"NOT_SVHC\".",
                            "example": true
                          },
                          "svhcStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "SVHC-status (Substance of Very High Concern); null hvis ukjent.",
                            "example": "SVHC"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "echa"
                            ],
                            "description": "Proveniens per stoff.",
                            "example": "echa"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "echa",
                    "query": "benzene",
                    "total": 1,
                    "page": 0,
                    "pageSize": 20,
                    "substances": [
                      {
                        "substanceId": "100.000.567",
                        "name": "Benzene",
                        "ecNumber": "200-753-7",
                        "casNumber": "71-43-2",
                        "molecularFormula": "C6H6",
                        "iupacName": "benzene",
                        "classification": [
                          {
                            "hazardClass": "Carcinogenicity",
                            "signalWord": "Danger",
                            "hPhrases": [
                              "H350",
                              "H340"
                            ],
                            "ghsPictograms": [
                              "GHS08",
                              "GHS02"
                            ]
                          }
                        ],
                        "isAuthorisationRequired": false,
                        "isRestricted": true,
                        "isSvhc": true,
                        "svhcStatus": "SVHC",
                        "source": "echa"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/echa/substances/{substanceId}": {
      "get": {
        "tags": [
          "connector:echa"
        ],
        "operationId": "get_api_connectors_echa_substances__substanceId_",
        "summary": "GET /api/connectors/echa/substances/{substanceId} Henter detaljer for et enkelt kjemikalie fra ECHA ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/echa/substances/[substanceId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEchaSubstance",
                  "additionalProperties": false,
                  "description": "Normalisert kjemikalie-detalj (CLP/REACH) fra EU ECHA C&L Inventory. Alle felt er alltid til stede — normalize-laget defaulter manglende verdier til null, tom liste eller false.",
                  "required": [
                    "substanceId",
                    "name",
                    "ecNumber",
                    "casNumber",
                    "molecularFormula",
                    "iupacName",
                    "classification",
                    "isAuthorisationRequired",
                    "isRestricted",
                    "isSvhc",
                    "svhcStatus",
                    "source"
                  ],
                  "properties": {
                    "substanceId": {
                      "type": "string",
                      "description": "Stoff-identifikator. ECHA intern ID, EC-nummer eller CAS-nummer (avledet fra første tilgjengelige rå-felt; kan være tom streng).",
                      "example": "100.000.567"
                    },
                    "name": {
                      "type": "string",
                      "description": "Stoffnavn. Defaulter til \"Unknown\" når ECHA ikke oppgir navn.",
                      "example": "Benzene"
                    },
                    "ecNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "EC-nummer (format XXX-XXX-X). null hvis ikke oppgitt.",
                      "pattern": "^\\d{3}-\\d{3}-\\d$",
                      "example": "200-753-7"
                    },
                    "casNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CAS Registry Number. null hvis ikke oppgitt.",
                      "example": "71-43-2"
                    },
                    "molecularFormula": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Molekylærformel. null hvis ikke oppgitt.",
                      "example": "C6H6"
                    },
                    "iupacName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "IUPAC-navn. null hvis ikke oppgitt.",
                      "example": "benzene"
                    },
                    "classification": {
                      "type": "array",
                      "description": "CLP-klassifiseringer (harmonisert). Tom liste når ingen klassifisering er tilgjengelig.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én CLP-fareklasse med signalord, H-fraser og GHS-piktogrammer.",
                        "required": [
                          "hazardClass",
                          "signalWord",
                          "hPhrases",
                          "ghsPictograms"
                        ],
                        "properties": {
                          "hazardClass": {
                            "type": "string",
                            "description": "Fareklasse. Defaulter til \"Unknown\" når ECHA ikke oppgir den.",
                            "example": "Carcinogenicity"
                          },
                          "signalWord": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "CLP-signalord (Danger/Warning). null hvis ikke oppgitt.",
                            "example": "Danger"
                          },
                          "hPhrases": {
                            "type": "array",
                            "description": "H-fraser (faresetninger). Tom liste hvis ingen.",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "H350",
                              "H340"
                            ]
                          },
                          "ghsPictograms": {
                            "type": "array",
                            "description": "GHS-piktogram-koder. Tom liste hvis ingen.",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "GHS08",
                              "GHS02"
                            ]
                          }
                        }
                      }
                    },
                    "isAuthorisationRequired": {
                      "type": "boolean",
                      "description": "Krever REACH-autorisasjon (avledet fra rå `authorisation`).",
                      "example": false
                    },
                    "isRestricted": {
                      "type": "boolean",
                      "description": "Underlagt REACH-restriksjon (avledet fra rå `restriction`).",
                      "example": true
                    },
                    "isSvhc": {
                      "type": "boolean",
                      "description": "Substance of Very High Concern — true når svhcStatus finnes og er ulik \"NOT_SVHC\".",
                      "example": true
                    },
                    "svhcStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Rå SVHC-status fra ECHA. null hvis ikke oppgitt.",
                      "example": "SVHC"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "echa"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "echa"
                    }
                  },
                  "example": {
                    "substanceId": "100.000.567",
                    "name": "Benzene",
                    "ecNumber": "200-753-7",
                    "casNumber": "71-43-2",
                    "molecularFormula": "C6H6",
                    "iupacName": "benzene",
                    "classification": [
                      {
                        "hazardClass": "Carcinogenicity",
                        "signalWord": "Danger",
                        "hPhrases": [
                          "H350",
                          "H340"
                        ],
                        "ghsPictograms": [
                          "GHS08",
                          "GHS02"
                        ]
                      }
                    ],
                    "isAuthorisationRequired": false,
                    "isRestricted": true,
                    "isSvhc": true,
                    "svhcStatus": "SVHC",
                    "source": "echa"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "substanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `substanceId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/einnsyn/document/{documentId}": {
      "get": {
        "tags": [
          "connector:einnsyn"
        ],
        "operationId": "get_api_connectors_einnsyn_document__documentId_",
        "summary": "GET /api/connectors/einnsyn/document/:documentId Henter en enkelt journalpost fra eInnsyn.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/einnsyn/document/[documentId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEinnsynDocument",
                  "additionalProperties": false,
                  "description": "Normalisert eInnsyn-journalpost (offentlig dokumentjournal). `id`, `tittel` og `publisher` er alltid satt (normaliseringen fyller fallback-verdier); øvrige metadatafelt er nullbare når eInnsyn ikke har dem.",
                  "required": [
                    "id",
                    "tittel",
                    "offentligTittel",
                    "journaldato",
                    "dokumentdato",
                    "saksnummer",
                    "journalpostnummer",
                    "publisher",
                    "url"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "eInnsyn-journalpost-ID (`raw.id ?? raw.iri`). Tom streng hvis upstream mangler både `id` og `iri`.",
                      "example": "jp_01j73abc4567def8901ghij"
                    },
                    "tittel": {
                      "type": "string",
                      "description": "Visningstittel (`tittel ?? offentligTittel ?? offentligTittelSensitiv`). Fallback `\"(uten tittel)\"` når ingen tittel finnes.",
                      "example": "Søknad om tilskudd til kulturarrangement"
                    },
                    "offentligTittel": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Offentlig (sladdet) tittel direkte fra eInnsyn, eller null.",
                      "example": "Søknad om tilskudd til kulturarrangement"
                    },
                    "journaldato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Journalføringsdato (ISO-8601), eller null.",
                      "example": "2025-03-14"
                    },
                    "dokumentdato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Dokumentets dato (`dokumentetsDato ?? dokumentdato`, ISO-8601), eller null.",
                      "example": "2025-03-10"
                    },
                    "saksnummer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Saksnummer journalposten tilhører, eller null.",
                      "example": "2025/1234"
                    },
                    "journalpostnummer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Løpenummer innenfor saken, stringifisert fra upstream (kan være tall), eller null.",
                      "example": "3"
                    },
                    "publisher": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Publiserende organ. Alltid til stede; `navn` fyller fallback (`\"Ukjent organ\"`) når det ikke kan resolves.",
                      "required": [
                        "navn",
                        "orgnummer"
                      ],
                      "properties": {
                        "navn": {
                          "type": "string",
                          "description": "Organets navn, eller fallback `\"Ukjent organ\"`.",
                          "example": "Kulturdepartementet"
                        },
                        "orgnummer": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Organisasjonsnummer for organet, eller null.",
                          "example": "972417866"
                        },
                        "id": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "eInnsyn journalenhet-ID (#2529). Valgfri — utelates når den ikke er tilgjengelig.",
                          "example": "enh_01j73xyz9876wvut5432srqp"
                        },
                        "publisherLink": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Lenke til organet på einnsyn.no, bygd fra journalenhet-ID (#2613). Valgfri — null/utelatt uten ID.",
                          "example": "https://einnsyn.no/enheter/enh_01j73xyz9876wvut5432srqp"
                        }
                      }
                    },
                    "url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Offentlig einnsyn.no-visning av journalposten (foretrekker `slug`, ellers `id`/`iri`), eller null.",
                      "example": "https://einnsyn.no/journalpost/sok-om-tilskudd-kulturarrangement"
                    }
                  },
                  "example": {
                    "id": "jp_01j73abc4567def8901ghij",
                    "tittel": "Søknad om tilskudd til kulturarrangement",
                    "offentligTittel": "Søknad om tilskudd til kulturarrangement",
                    "journaldato": "2025-03-14",
                    "dokumentdato": "2025-03-10",
                    "saksnummer": "2025/1234",
                    "journalpostnummer": "3",
                    "publisher": {
                      "navn": "Kulturdepartementet",
                      "orgnummer": "972417866",
                      "id": "enh_01j73xyz9876wvut5432srqp",
                      "publisherLink": "https://einnsyn.no/enheter/enh_01j73xyz9876wvut5432srqp"
                    },
                    "url": "https://einnsyn.no/journalpost/sok-om-tilskudd-kulturarrangement"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `documentId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/einnsyn/health": {
      "get": {
        "tags": [
          "connector:einnsyn"
        ],
        "operationId": "get_api_connectors_einnsyn_health",
        "summary": "GET /api/connectors/einnsyn/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/einnsyn/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/einnsyn/search": {
      "get": {
        "tags": [
          "connector:einnsyn"
        ],
        "operationId": "get_api_connectors_einnsyn_search",
        "summary": "GET /api/connectors/einnsyn/search Query-params: q              (valgfri) — fritekst-søk from       ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/einnsyn/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEinnsynSearch",
                  "additionalProperties": false,
                  "description": "Søketreff i eInnsyn (statens/kommuners offentlige postjournal): journalposter med tittel, datoer, saksnummer og publiserende virksomhet.",
                  "required": [
                    "hits",
                    "totalHits",
                    "page",
                    "pageSize",
                    "nextCursor"
                  ],
                  "properties": {
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "entity",
                          "tittel",
                          "offentligTittel",
                          "journaldato",
                          "dokumentdato",
                          "saksnummer",
                          "journalpostnummer",
                          "publisher",
                          "url"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "jp_123"
                          },
                          "entity": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Entitetstype utledet fra id-prefiks (f.eks. Journalpost/Saksmappe/Møtemappe).",
                            "example": "Journalpost"
                          },
                          "tittel": {
                            "type": "string",
                            "example": "Søknad om tilskudd"
                          },
                          "offentligTittel": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "journaldato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-03-01"
                          },
                          "dokumentdato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-02-28"
                          },
                          "saksnummer": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025/123"
                          },
                          "journalpostnummer": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "4"
                          },
                          "publisher": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "navn",
                              "orgnummer"
                            ],
                            "properties": {
                              "navn": {
                                "type": "string",
                                "example": "Oslo kommune"
                              },
                              "orgnummer": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "958935420"
                              },
                              "id": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "publisherLink": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://einnsyn.no/journalpost/jp_123"
                          }
                        }
                      }
                    },
                    "totalHits": {
                      "type": "integer",
                      "example": 240
                    },
                    "page": {
                      "type": "integer",
                      "example": 0
                    },
                    "pageSize": {
                      "type": "integer",
                      "example": 20
                    },
                    "nextCursor": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "eyJvZmZzZXQiOjIwfQ=="
                    }
                  },
                  "example": {
                    "hits": [
                      {
                        "id": "jp_123",
                        "entity": "Journalpost",
                        "tittel": "Søknad om tilskudd",
                        "offentligTittel": "Søknad om tilskudd",
                        "journaldato": "2025-03-01",
                        "dokumentdato": "2025-02-28",
                        "saksnummer": "2025/123",
                        "journalpostnummer": "4",
                        "publisher": {
                          "navn": "Oslo kommune",
                          "orgnummer": "958935420",
                          "id": null,
                          "publisherLink": null
                        },
                        "url": "https://einnsyn.no/journalpost/jp_123"
                      }
                    ],
                    "totalHits": 240,
                    "page": 0,
                    "pageSize": 20,
                    "nextCursor": "eyJvZmZzZXQiOjIwfQ=="
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eiopa/datasets": {
      "get": {
        "tags": [
          "connector:eiopa"
        ],
        "operationId": "get_api_connectors_eiopa_datasets",
        "summary": "GET /api/connectors/eiopa/datasets Kuratert katalog over EIOPAs åpne datasett (#2965).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eiopa/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEiopaDatasets",
                  "additionalProperties": false,
                  "description": "Kuratert katalog over EIOPAs åpne datasett (forsikring/pensjon, EØS). Støtter filtrering på `?topic`.",
                  "required": [
                    "source",
                    "total",
                    "totalAll",
                    "filter",
                    "datasets",
                    "topics",
                    "note"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "eiopa"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "eiopa"
                    },
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall datasett i svaret (etter eventuell topic-filtrering).",
                      "example": 7
                    },
                    "totalAll": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall datasett i katalogen (uavhengig av filter).",
                      "example": 7
                    },
                    "filter": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Aktivt filter, eller null når `?topic` ikke er oppgitt.",
                      "required": [
                        "topic"
                      ],
                      "properties": {
                        "topic": {
                          "type": "string",
                          "description": "Topic-verdien det ble filtrert på.",
                          "example": "solvency-ii"
                        }
                      },
                      "example": null
                    },
                    "datasets": {
                      "type": "array",
                      "description": "Katalog-datasett (filtrert på topic hvis oppgitt; tom array hvis ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Ett katalog-datasett (EiopaDiscoveryDataset).",
                        "required": [
                          "id",
                          "title",
                          "topic",
                          "description",
                          "frequency",
                          "formats",
                          "url",
                          "lastVerified"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Stabil katalog-ID (slug).",
                            "example": "solvency-ii-statistics"
                          },
                          "title": {
                            "type": "string",
                            "description": "Menneskelig lesbar tittel.",
                            "example": "Solvency II — Kvartalsvise aggregerte statistikker"
                          },
                          "topic": {
                            "type": "string",
                            "enum": [
                              "solvency-ii",
                              "occupational-pensions",
                              "insurance-statistics",
                              "ibip",
                              "pension-funds",
                              "other"
                            ],
                            "description": "Tematisk kategori for datasettet.",
                            "example": "solvency-ii"
                          },
                          "description": {
                            "type": "string",
                            "description": "Beskrivelse av datasettets innhold og dekning.",
                            "example": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet."
                          },
                          "frequency": {
                            "type": "string",
                            "enum": [
                              "quarterly",
                              "annual",
                              "monthly",
                              "ad-hoc"
                            ],
                            "description": "Publiseringsfrekvens hos EIOPA.",
                            "example": "quarterly"
                          },
                          "formats": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Tilgjengelige filformater for nedlasting.",
                            "example": [
                              "CSV",
                              "Excel"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Kanonisk EIOPA-side for datasettet.",
                            "example": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en"
                          },
                          "ketlEndpoint": {
                            "type": "string",
                            "description": "KETL-rute som eksponerer datasettet, hvis tilgjengelig. Utelates for datasett uten dedikert endepunkt (f.eks. solvency-ii-qrts).",
                            "example": "/api/connectors/eiopa/datasets/solvency-ii-statistics"
                          },
                          "lastVerified": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                            "description": "Dato katalog-oppføringen sist ble verifisert (ISO-8601).",
                            "example": "2026-06-10"
                          }
                        }
                      }
                    },
                    "topics": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "solvency-ii",
                          "occupational-pensions",
                          "insurance-statistics",
                          "ibip",
                          "pension-funds",
                          "other"
                        ]
                      },
                      "description": "Komplett liste over tilgjengelige topic-verdier (for ?topic-filter).",
                      "example": [
                        "solvency-ii",
                        "occupational-pensions",
                        "insurance-statistics",
                        "ibip",
                        "pension-funds",
                        "other"
                      ]
                    },
                    "note": {
                      "type": "string",
                      "description": "Fritekst-merknad om katalogens proveniens og oppdateringskadens.",
                      "example": "Kuratert katalog — oppdateres manuelt mot https://www.eiopa.europa.eu/tools-and-data/data_en"
                    }
                  },
                  "example": {
                    "source": "eiopa",
                    "total": 2,
                    "totalAll": 7,
                    "filter": {
                      "topic": "solvency-ii"
                    },
                    "datasets": [
                      {
                        "id": "solvency-ii-statistics",
                        "title": "Solvency II — Kvartalsvise aggregerte statistikker",
                        "topic": "solvency-ii",
                        "description": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet.",
                        "frequency": "quarterly",
                        "formats": [
                          "CSV",
                          "Excel"
                        ],
                        "url": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en",
                        "ketlEndpoint": "/api/connectors/eiopa/datasets/solvency-ii-statistics",
                        "lastVerified": "2026-06-10"
                      },
                      {
                        "id": "solvency-ii-qrts",
                        "title": "Solvency II QRTs — Kvantitative rapporteringsskjemaer",
                        "topic": "solvency-ii",
                        "description": "Granulære kvantitative rapporteringsskjemaer (QRT) som forsikringsselskaper rapporterer til nasjonale tilsynsmyndigheter. Inneholder detaljerte data om forsikringstekniske avsetninger, aksjeeksponering og reinvestering.",
                        "frequency": "quarterly",
                        "formats": [
                          "XBRL",
                          "Excel"
                        ],
                        "url": "https://www.eiopa.europa.eu/tools-and-data/solvency-ii-data_en",
                        "lastVerified": "2026-06-02"
                      }
                    ],
                    "topics": [
                      "solvency-ii",
                      "occupational-pensions",
                      "insurance-statistics",
                      "ibip",
                      "pension-funds",
                      "other"
                    ],
                    "note": "Kuratert katalog — oppdateres manuelt mot https://www.eiopa.europa.eu/tools-and-data/data_en"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eiopa/datasets/{id}": {
      "get": {
        "tags": [
          "connector:eiopa"
        ],
        "operationId": "get_api_connectors_eiopa_datasets__id_",
        "summary": "GET /api/connectors/eiopa/datasets/[id] Detaljer om ett EIOPA-datasett fra kuratert katalog (#2965).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eiopa/datasets/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEiopaDataset",
                  "additionalProperties": false,
                  "description": "Detaljer om ett kuratert EIOPA-datasett (forsikring/pensjon, EØS).",
                  "required": [
                    "source",
                    "dataset"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "eiopa"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "eiopa"
                    },
                    "dataset": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Ett katalog-datasett (EiopaDiscoveryDataset).",
                      "required": [
                        "id",
                        "title",
                        "topic",
                        "description",
                        "frequency",
                        "formats",
                        "url",
                        "lastVerified"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Stabil katalog-ID (slug).",
                          "example": "solvency-ii-statistics"
                        },
                        "title": {
                          "type": "string",
                          "description": "Menneskelig lesbar tittel.",
                          "example": "Solvency II — Kvartalsvise aggregerte statistikker"
                        },
                        "topic": {
                          "type": "string",
                          "enum": [
                            "solvency-ii",
                            "occupational-pensions",
                            "insurance-statistics",
                            "ibip",
                            "pension-funds",
                            "other"
                          ],
                          "description": "Tematisk kategori for datasettet.",
                          "example": "solvency-ii"
                        },
                        "description": {
                          "type": "string",
                          "description": "Beskrivelse av datasettets innhold og dekning.",
                          "example": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet."
                        },
                        "frequency": {
                          "type": "string",
                          "enum": [
                            "quarterly",
                            "annual",
                            "monthly",
                            "ad-hoc"
                          ],
                          "description": "Publiseringsfrekvens hos EIOPA.",
                          "example": "quarterly"
                        },
                        "formats": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Tilgjengelige filformater for nedlasting.",
                          "example": [
                            "CSV",
                            "Excel"
                          ]
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Kanonisk EIOPA-side for datasettet.",
                          "example": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en"
                        },
                        "ketlEndpoint": {
                          "type": "string",
                          "description": "KETL-rute som eksponerer datasettet, hvis tilgjengelig. Utelates for datasett uten dedikert endepunkt (f.eks. solvency-ii-qrts).",
                          "example": "/api/connectors/eiopa/datasets/solvency-ii-statistics"
                        },
                        "lastVerified": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "Dato katalog-oppføringen sist ble verifisert (ISO-8601).",
                          "example": "2026-06-10"
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "eiopa",
                    "dataset": {
                      "id": "solvency-ii-statistics",
                      "title": "Solvency II — Kvartalsvise aggregerte statistikker",
                      "topic": "solvency-ii",
                      "description": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet.",
                      "frequency": "quarterly",
                      "formats": [
                        "CSV",
                        "Excel"
                      ],
                      "url": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en",
                      "ketlEndpoint": "/api/connectors/eiopa/datasets/solvency-ii-statistics",
                      "lastVerified": "2026-06-10"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/eiopa/health": {
      "get": {
        "tags": [
          "connector:eiopa"
        ],
        "operationId": "get_api_connectors_eiopa_health",
        "summary": "GET /api/connectors/eiopa/health EIOPA connector health (#2965, #3399, #3412).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eiopa/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eiopa/query": {
      "get": {
        "tags": [
          "connector:eiopa"
        ],
        "operationId": "get_api_connectors_eiopa_query",
        "summary": "GET /api/connectors/eiopa/query SUNSET (#3399): EIOPAs statistikk-API (statistics.eiopa.europa.eu) e",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eiopa/query/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/elhub/consumption": {
      "get": {
        "tags": [
          "connector:elhub"
        ],
        "operationId": "get_api_connectors_elhub_consumption",
        "summary": "GET /api/connectors/elhub/consumption?area=NO1&start=YYYY-MM-DD&end=YYYY-MM-DD Forbruk per gruppe pe",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/elhub/consumption/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5"
              ]
            },
            "description": "Prisområde",
            "example": "NO1"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Sluttdato (YYYY-MM-DD)",
            "example": "2024-01-07"
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Startdato (YYYY-MM-DD)",
            "example": "2024-01-01"
          }
        ]
      }
    },
    "/api/connectors/elhub/exchange": {
      "get": {
        "tags": [
          "connector:elhub"
        ],
        "operationId": "get_api_connectors_elhub_exchange",
        "summary": "GET /api/connectors/elhub/exchange?area=NO1&start=YYYY-MM-DD&end=YYYY-MM-DD Utveksling per MBA per t",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/elhub/exchange/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5"
              ]
            },
            "description": "Prisområde",
            "example": "NO1"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Sluttdato (YYYY-MM-DD)",
            "example": "2024-01-07"
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Startdato (YYYY-MM-DD)",
            "example": "2024-01-01"
          }
        ]
      }
    },
    "/api/connectors/elhub/health": {
      "get": {
        "tags": [
          "connector:elhub"
        ],
        "operationId": "get_api_connectors_elhub_health",
        "summary": "GET /api/connectors/elhub/health Deep probe for Elhub Energy Data (#2727, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/elhub/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/elhub/price-areas": {
      "get": {
        "tags": [
          "connector:elhub"
        ],
        "operationId": "get_api_connectors_elhub_price_areas",
        "summary": "GET /api/connectors/elhub/price-areas Statisk liste over norske prisområder (NO1–NO5) med etikett.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/elhub/price-areas/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/elhub/production": {
      "get": {
        "tags": [
          "connector:elhub"
        ],
        "operationId": "get_api_connectors_elhub_production",
        "summary": "GET /api/connectors/elhub/production?area=NO1&start=YYYY-MM-DD&end=YYYY-MM-DD Produksjon per gruppe ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/elhub/production/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5"
              ]
            },
            "description": "Prisområde",
            "example": "NO1"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Sluttdato (YYYY-MM-DD)",
            "example": "2024-01-07"
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Startdato (YYYY-MM-DD)",
            "example": "2024-01-01"
          }
        ]
      }
    },
    "/api/connectors/energimyndigheten/health": {
      "get": {
        "tags": [
          "connector:energimyndigheten"
        ],
        "operationId": "get_api_connectors_energimyndigheten_health",
        "summary": "GET /api/connectors/energimyndigheten/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/energimyndigheten/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/energimyndigheten/tables": {
      "get": {
        "tags": [
          "connector:energimyndigheten"
        ],
        "operationId": "get_api_connectors_energimyndigheten_tables",
        "summary": "GET /api/connectors/energimyndigheten/tables",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/energimyndigheten/tables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/entso-e/actual-generation": {
      "get": {
        "tags": [
          "connector:entso-e"
        ],
        "operationId": "get_api_connectors_entso_e_actual_generation",
        "summary": "GET /api/connectors/entso-e/actual-generation?zone=NO1&date=&psrType=B16 Faktisk produksjon per tekn",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entso-e/actual-generation/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Fra-dato (YYYY-MM-DD)",
            "example": "2024-01-01"
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Til-dato (YYYY-MM-DD)",
            "example": "2024-01-07"
          },
          {
            "name": "zone",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Budområde",
            "example": "NO1"
          }
        ]
      }
    },
    "/api/connectors/entso-e/capacity": {
      "get": {
        "tags": [
          "connector:entso-e"
        ],
        "operationId": "get_api_connectors_entso_e_capacity",
        "summary": "GET /api/connectors/entso-e/capacity?from=NO1&to=SE3&date= Day-ahead overføringskapasitet mellom son",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entso-e/capacity/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Fra-budområde",
            "example": "NO1"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Til-budområde",
            "example": "NO2"
          }
        ]
      }
    },
    "/api/connectors/entso-e/cross-border-flow": {
      "get": {
        "tags": [
          "connector:entso-e"
        ],
        "operationId": "get_api_connectors_entso_e_cross_border_flow",
        "summary": "GET /api/connectors/entso-e/cross-border-flow?from=NO1&to=SE3&date= Faktisk kraftutveksling mellom s",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entso-e/cross-border-flow/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Fra-budområde",
            "example": "NO1"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Til-budområde",
            "example": "NO2"
          }
        ]
      }
    },
    "/api/connectors/entso-e/day-ahead-price": {
      "get": {
        "tags": [
          "connector:entso-e"
        ],
        "operationId": "get_api_connectors_entso_e_day_ahead_price",
        "summary": "GET /api/connectors/entso-e/day-ahead-price?zone=NO1&date=2026-05-16 Day-ahead spotpris per time per",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entso-e/day-ahead-price/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Fra-dato (YYYY-MM-DD)",
            "example": "2024-01-01"
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Til-dato (YYYY-MM-DD)",
            "example": "2024-01-07"
          },
          {
            "name": "zone",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Budområde",
            "example": "NO1"
          }
        ]
      }
    },
    "/api/connectors/entso-e/health": {
      "get": {
        "tags": [
          "connector:entso-e"
        ],
        "operationId": "get_api_connectors_entso_e_health",
        "summary": "GET /api/connectors/entso-e/health Default: statisk status (configured=false når ENTSOE_SECURITY_TOK",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entso-e/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/entso-e/load": {
      "get": {
        "tags": [
          "connector:entso-e"
        ],
        "operationId": "get_api_connectors_entso_e_load",
        "summary": "GET /api/connectors/entso-e/load?zone=NO1&date=2026-05-16 Faktisk last/forbruk per sone (documentTyp",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entso-e/load/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Fra-dato (YYYY-MM-DD)",
            "example": "2024-01-01"
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Til-dato (YYYY-MM-DD)",
            "example": "2024-01-07"
          },
          {
            "name": "zone",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO",
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5",
                "SE",
                "SE1",
                "SE2",
                "SE3",
                "SE4",
                "DK",
                "DK1",
                "DK2"
              ]
            },
            "description": "Budområde",
            "example": "NO1"
          }
        ]
      }
    },
    "/api/connectors/entur/departures": {
      "get": {
        "tags": [
          "connector:entur"
        ],
        "operationId": "get_api_connectors_entur_departures",
        "summary": "GET /api/connectors/entur/departures?stopId=NSR:StopPlace:337&n=10&range=7200 Sanntids avganger med ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entur/departures/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEnturDepartures",
                  "additionalProperties": false,
                  "description": "Sanntids avgangstavle for ett Entur-stoppested: linje, transportmiddel, destinasjon og planlagt/forventet avgangstid med avviksmeldinger.",
                  "required": [
                    "stopId",
                    "stopName",
                    "departures"
                  ],
                  "properties": {
                    "stopId": {
                      "type": "string",
                      "example": "NSR:StopPlace:337"
                    },
                    "stopName": {
                      "type": "string",
                      "example": "Oslo bussterminal"
                    },
                    "departures": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "line",
                          "lineName",
                          "transportMode",
                          "destination",
                          "quayId",
                          "aimedDepartureTime",
                          "expectedDepartureTime",
                          "realtime",
                          "cancelled",
                          "deviations"
                        ],
                        "properties": {
                          "line": {
                            "type": "string",
                            "example": "RUT:Line:31"
                          },
                          "lineName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "31"
                          },
                          "transportMode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "bus"
                          },
                          "destination": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Tonsenhagen"
                          },
                          "quayId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NSR:Quay:11762"
                          },
                          "aimedDepartureTime": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2026-07-03T09:20:00+02:00"
                          },
                          "expectedDepartureTime": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2026-07-03T09:22:00+02:00"
                          },
                          "realtime": {
                            "type": "boolean",
                            "example": true
                          },
                          "cancelled": {
                            "type": "boolean",
                            "example": false
                          },
                          "deviations": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": []
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "stopId": "NSR:StopPlace:337",
                    "stopName": "Oslo bussterminal",
                    "departures": [
                      {
                        "line": "RUT:Line:31",
                        "lineName": "31",
                        "transportMode": "bus",
                        "destination": "Tonsenhagen",
                        "quayId": "NSR:Quay:11762",
                        "aimedDepartureTime": "2026-07-03T09:20:00+02:00",
                        "expectedDepartureTime": "2026-07-03T09:22:00+02:00",
                        "realtime": true,
                        "cancelled": false,
                        "deviations": []
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "stopId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "NSR:StopPlace-ID",
            "example": "NSR:StopPlace:337"
          }
        ]
      }
    },
    "/api/connectors/entur/health": {
      "get": {
        "tags": [
          "connector:entur"
        ],
        "operationId": "get_api_connectors_entur_health",
        "summary": "GET /api/connectors/entur/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entur/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/entur/routes": {
      "get": {
        "tags": [
          "connector:entur"
        ],
        "operationId": "get_api_connectors_entur_routes",
        "summary": "GET /api/connectors/entur/routes?from=NSR:StopPlace:337&to=NSR:StopPlace:548&n=3 Reiseplanlegging me",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entur/routes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fra-sted: NSR:StopPlace-ID eller koordinater 'lat,lon'",
            "example": "NSR:StopPlace:337"
          },
          {
            "name": "n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "3"
            },
            "description": "Antall reiseforslag"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Til-sted: NSR:StopPlace-ID eller koordinater 'lat,lon'",
            "example": "NSR:StopPlace:548"
          }
        ]
      }
    },
    "/api/connectors/entur/stops": {
      "get": {
        "tags": [
          "connector:entur"
        ],
        "operationId": "get_api_connectors_entur_stops",
        "summary": "GET /api/connectors/entur/stops?text=Oslo&size=10&lang=no Søk etter kollektivholdeplasser og steder ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/entur/stops/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorEnturStops",
                  "description": "Normalisert treffliste av kollektivholdeplasser og steder fra Entur Geocoder (GeoJSON-features flatet til kanoniske domene-objekter). Tom array ved ingen treff.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Ett normalisert sted/holdeplass.",
                    "required": [
                      "id",
                      "name",
                      "label",
                      "layer",
                      "longitude",
                      "latitude",
                      "locality",
                      "county",
                      "confidence"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Entur-id (`properties.id`, faller tilbake til `gid`, ellers tom streng).",
                        "example": "NSR:StopPlace:337"
                      },
                      "name": {
                        "type": "string",
                        "description": "Stedsnavn (`properties.name`; tom streng hvis Entur utelater).",
                        "example": "Oslo S"
                      },
                      "label": {
                        "type": "string",
                        "description": "Visningsetikett (`properties.label`, faller tilbake til `name`).",
                        "example": "Oslo S, Oslo"
                      },
                      "layer": {
                        "type": "string",
                        "description": "Entur-lag/stedstype. `\"unknown\"` når Entur utelater feltet.",
                        "enum": [
                          "venue",
                          "address",
                          "street",
                          "locality",
                          "borough",
                          "county",
                          "country",
                          "unknown"
                        ],
                        "example": "venue"
                      },
                      "longitude": {
                        "type": "number",
                        "description": "WGS84-lengdegrad (GeoJSON `geometry.coordinates[0]`).",
                        "example": 10.7522
                      },
                      "latitude": {
                        "type": "number",
                        "description": "WGS84-breddegrad (GeoJSON `geometry.coordinates[1]`).",
                        "example": 59.9111
                      },
                      "locality": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Kommune/sted (`properties.locality`); `null` hvis ukjent.",
                        "example": "Oslo"
                      },
                      "county": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Fylke (`properties.county`); `null` hvis ukjent.",
                        "example": "Oslo"
                      },
                      "confidence": {
                        "type": "number",
                        "description": "Entur-konfidensskår for treffet (`properties.confidence`); `1` som default hvis Entur utelater feltet.",
                        "minimum": 0,
                        "maximum": 1,
                        "example": 0.95
                      }
                    }
                  },
                  "example": [
                    {
                      "id": "NSR:StopPlace:337",
                      "name": "Oslo S",
                      "label": "Oslo S, Oslo",
                      "layer": "venue",
                      "longitude": 10.7522,
                      "latitude": 59.9111,
                      "locality": "Oslo",
                      "county": "Oslo",
                      "confidence": 0.95
                    },
                    {
                      "id": "NSR:StopPlace:58366",
                      "name": "Nationaltheatret",
                      "label": "Nationaltheatret, Oslo",
                      "layer": "venue",
                      "longitude": 10.7333,
                      "latitude": 59.9145,
                      "locality": "Oslo",
                      "county": "Oslo",
                      "confidence": 0.88
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "no"
            },
            "description": "Språk"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "10"
            },
            "description": "Antall treff"
          },
          {
            "name": "text",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søketekst for holdeplass/sted",
            "example": "Oslo S"
          }
        ]
      }
    },
    "/api/connectors/ep-votes/committees": {
      "get": {
        "tags": [
          "connector:ep-votes"
        ],
        "operationId": "get_api_connectors_ep_votes_committees",
        "summary": "GET /api/connectors/ep-votes/committees (#2394) Europaparlamentets komitéer.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ep-votes/committees/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Komitékode (f.eks. IMCO) — utelat for alle",
            "example": "IMCO"
          }
        ]
      }
    },
    "/api/connectors/ep-votes/health": {
      "get": {
        "tags": [
          "connector:ep-votes"
        ],
        "operationId": "get_api_connectors_ep_votes_health",
        "summary": "GET /api/connectors/ep-votes/health (#2394) Default: statisk metadata via `handleEpHealth()` (rask/u",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ep-votes/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ep-votes/meps": {
      "get": {
        "tags": [
          "connector:ep-votes"
        ],
        "operationId": "get_api_connectors_ep_votes_meps",
        "summary": "GET /api/connectors/ep-votes/meps (#2394) Europaparlamentarikere (MEP-er).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ep-votes/meps/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "committee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Komitékode (IMCO/ECON/ENVI …)",
            "example": "ECON"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 EU-medlemsland (EP har kun EU-land — ikke NO/IS)",
            "example": "DE"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "25"
            },
            "description": "Maks treff (maks 100)",
            "example": "25"
          }
        ]
      }
    },
    "/api/connectors/ep-votes/meps/{mepId}/votes": {
      "get": {
        "tags": [
          "connector:ep-votes"
        ],
        "operationId": "get_api_connectors_ep_votes_meps__mepId__votes",
        "summary": "GET /api/connectors/ep-votes/meps/[mepId]/votes (#2394) Voting record for én MEP.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ep-votes/meps/[mepId]/votes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEpVotesMepVotes",
                  "additionalProperties": false,
                  "description": "Voteringsfasit (per-vote-stemmer) for én MEP fra Europaparlamentets åpne data.",
                  "required": [
                    "mepId",
                    "count",
                    "limit",
                    "votes"
                  ],
                  "properties": {
                    "mepId": {
                      "type": "string",
                      "pattern": "^\\d{4,7}$",
                      "description": "MEP-ID (4-7 sifre), ekko av path-parameteren.",
                      "example": "124936"
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall stemmer i votes[] (kan være < limit).",
                      "example": 2
                    },
                    "limit": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 200,
                      "description": "Anvendt maks-antall (default 50, klippet til 1-200).",
                      "example": 50
                    },
                    "votes": {
                      "type": "array",
                      "description": "Per-vote-stemmer for denne MEP-en (tom hvis ingen registrert).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "voteId",
                          "voteTitle",
                          "voteDate",
                          "mepId",
                          "position"
                        ],
                        "description": "Én MEP-stemme i én votering (CanonicalMEPVote).",
                        "properties": {
                          "voteId": {
                            "type": "string",
                            "description": "ID for selve voteringen (tom streng hvis upstream mangler den).",
                            "example": "2024-04-23-A-9-2024-0001"
                          },
                          "voteTitle": {
                            "type": "string",
                            "description": "Tittel på voteringen (engelsk; tom streng hvis upstream mangler den).",
                            "example": "Resolution on the rule of law"
                          },
                          "voteDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                            "description": "Dato voteringen ble holdt (YYYY-MM-DD), eller null.",
                            "example": "2024-04-23"
                          },
                          "mepId": {
                            "type": "string",
                            "pattern": "^\\d{4,7}$",
                            "description": "MEP-ID for stemmegiveren (samme som topp-nivå mepId).",
                            "example": "124936"
                          },
                          "position": {
                            "type": "string",
                            "enum": [
                              "FOR",
                              "AGAINST",
                              "ABSTAIN",
                              "NOVOTE"
                            ],
                            "description": "Normalisert stemmeposisjon (NOVOTE hvis ukjent/manglende).",
                            "example": "FOR"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "mepId": "124936",
                    "count": 2,
                    "limit": 50,
                    "votes": [
                      {
                        "voteId": "2024-04-23-A-9-2024-0001",
                        "voteTitle": "Resolution on the rule of law",
                        "voteDate": "2024-04-23",
                        "mepId": "124936",
                        "position": "FOR"
                      },
                      {
                        "voteId": "2024-04-23-A-9-2024-0002",
                        "voteTitle": "Report on the budget discharge",
                        "voteDate": "2024-04-23",
                        "mepId": "124936",
                        "position": "ABSTAIN"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "mepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `mepId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ep-votes/votes": {
      "get": {
        "tags": [
          "connector:ep-votes"
        ],
        "operationId": "get_api_connectors_ep_votes_votes",
        "summary": "GET /api/connectors/ep-votes/votes (#2394) Voteringer i Europaparlamentet.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ep-votes/votes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Voteringsdato (YYYY-MM-DD)",
            "example": "2026-03-12"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "25"
            },
            "description": "Maks treff (maks 100)",
            "example": "25"
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Emne / sak (fritekst)",
            "example": "climate"
          }
        ]
      }
    },
    "/api/connectors/epo-ops/by-applicant": {
      "get": {
        "tags": [
          "connector:epo-ops"
        ],
        "operationId": "get_api_connectors_epo_ops_by_applicant",
        "summary": "GET /api/connectors/epo-ops/by-applicant (#2396) Søk patenter etter applicant.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/epo-ops/by-applicant/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/epo-ops/health": {
      "get": {
        "tags": [
          "connector:epo-ops"
        ],
        "operationId": "get_api_connectors_epo_ops_health",
        "summary": "GET /api/connectors/epo-ops/health (#2396) `?deep=1` gjør én minimal upstream-probe mot ops.epo.org ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/epo-ops/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/epo-ops/patent/{patentNumber}": {
      "get": {
        "tags": [
          "connector:epo-ops"
        ],
        "operationId": "get_api_connectors_epo_ops_patent__patentNumber_",
        "summary": "GET /api/connectors/epo-ops/patent/[patentNumber] (#2396) Full bibliografi for ett patent (tittel, s",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/epo-ops/patent/[patentNumber]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEpoOpsPatent",
                  "additionalProperties": false,
                  "description": "Kanonisert bibliografi for ett patent fra EPO Open Patent Services (OPS).",
                  "required": [
                    "patentNumber",
                    "patent"
                  ],
                  "properties": {
                    "patentNumber": {
                      "type": "string",
                      "description": "Normalisert (uppercased/trimmed) input-publikasjonsnummer fra ruten.",
                      "pattern": "^[A-Z]{2}\\d{6,8}([A-Z]{1,2}\\d?)?$",
                      "example": "EP1234567B1"
                    },
                    "patent": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Kanonisk patent (`CanonicalPatent`) — denormalisert fra rå EPO/JSON.",
                      "required": [
                        "patentNumber",
                        "title",
                        "inventors",
                        "applicants",
                        "filingDate",
                        "publicationDate",
                        "grantDate",
                        "status",
                        "ipcClasses",
                        "abstract",
                        "countryOfFiling",
                        "publicUrl",
                        "source"
                      ],
                      "properties": {
                        "patentNumber": {
                          "type": "string",
                          "description": "Komplett publikasjonsnummer satt sammen fra country+doc-number+kind (kan være tom hvis upstream mangler referanse).",
                          "example": "EP1234567B1"
                        },
                        "title": {
                          "type": "string",
                          "description": "Tittel — engelsk hvis tilgjengelig, ellers første språk (kan være tom).",
                          "example": "Hydrogen electrolysis cell"
                        },
                        "inventors": {
                          "type": "array",
                          "description": "Oppfinnere (kan være tom).",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "Andersen, Kari",
                            "Hansen, Ola"
                          ]
                        },
                        "applicants": {
                          "type": "array",
                          "description": "Søkere/applicants (kan være tom).",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "EQUINOR ASA"
                          ]
                        },
                        "filingDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Søknadsdato (ISO-8601) eller null.",
                          "example": "2020-03-12"
                        },
                        "publicationDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Publikasjonsdato (ISO-8601) eller null.",
                          "example": "2021-09-15"
                        },
                        "grantDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Meddelelsesdato (ISO-8601), kun satt om patent er meddelt; ellers null.",
                          "example": "2023-06-01"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "application",
                            "granted",
                            "expired",
                            "withdrawn",
                            "unknown"
                          ],
                          "description": "Avledet status — `granted` ved grantDate, `application` ved publicationDate, ellers `unknown`.",
                          "example": "granted"
                        },
                        "ipcClasses": {
                          "type": "array",
                          "description": "IPC-klassifiseringer (International Patent Classification, kun primær-symbolet per node).",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "C25B1/04",
                            "C25B9/00"
                          ]
                        },
                        "abstract": {
                          "type": "string",
                          "description": "Sammendrag (abstract) på engelsk hvis tilgjengelig (kan være tom).",
                          "example": "An electrolysis cell for producing hydrogen from water."
                        },
                        "countryOfFiling": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "ISO 3166-1 alpha-2 for første-publiseringsland (f.eks. \"EP\"), eller null.",
                          "example": "EP"
                        },
                        "publicUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Lenke til Espacenet-visning av patentet.",
                          "example": "https://worldwide.espacenet.com/patent/search?q=EP1234567B1"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "EPO-OPS"
                          ],
                          "description": "Proveniens (#74 explainability).",
                          "example": "EPO-OPS"
                        }
                      }
                    }
                  },
                  "example": {
                    "patentNumber": "EP1234567B1",
                    "patent": {
                      "patentNumber": "EP1234567B1",
                      "title": "Hydrogen electrolysis cell",
                      "inventors": [
                        "Andersen, Kari",
                        "Hansen, Ola"
                      ],
                      "applicants": [
                        "EQUINOR ASA"
                      ],
                      "filingDate": "2020-03-12",
                      "publicationDate": "2021-09-15",
                      "grantDate": "2023-06-01",
                      "status": "granted",
                      "ipcClasses": [
                        "C25B1/04",
                        "C25B9/00"
                      ],
                      "abstract": "An electrolysis cell for producing hydrogen from water.",
                      "countryOfFiling": "EP",
                      "publicUrl": "https://worldwide.espacenet.com/patent/search?q=EP1234567B1",
                      "source": "EPO-OPS"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "patentNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `patentNumber` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/epo-ops/search": {
      "get": {
        "tags": [
          "connector:epo-ops"
        ],
        "operationId": "get_api_connectors_epo_ops_search",
        "summary": "GET /api/connectors/epo-ops/search (#2396) Søk i EPO Open Patent Services via Common Query Language ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/epo-ops/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEpoOpsSearch",
                  "additionalProperties": false,
                  "description": "Patentsøk i EPO OPS. Treff med publikasjonsnummer, familie-id og publiseringsdato.",
                  "required": [
                    "query",
                    "total",
                    "count",
                    "limit",
                    "patents"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "carbon capture"
                    },
                    "total": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream.",
                      "example": 1200
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall treff i denne siden.",
                      "example": 25
                    },
                    "limit": {
                      "type": "integer",
                      "example": 25
                    },
                    "patents": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "patentNumber",
                          "familyId",
                          "publicationDate"
                        ],
                        "properties": {
                          "patentNumber": {
                            "type": "string",
                            "example": "EP1234567A1"
                          },
                          "familyId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "12345678"
                          },
                          "publicationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2020-06-01"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "carbon capture",
                    "total": 1200,
                    "count": 1,
                    "limit": 25,
                    "patents": [
                      {
                        "patentNumber": "EP1234567A1",
                        "familyId": "12345678",
                        "publicationDate": "2020-06-01"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eu-eprtr/emissions": {
      "get": {
        "tags": [
          "connector:eu-eprtr"
        ],
        "operationId": "get_api_connectors_eu_eprtr_emissions",
        "summary": "GET /api/connectors/eu-eprtr/emissions (#2410) Utslippsrapporter (per anlegg, år og stoff).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-eprtr/emissions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Utslippskategori (AIR/WATER/SOIL)",
            "example": "AIR"
          },
          {
            "name": "facilityId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på anleggs-ID",
            "example": "12345"
          },
          {
            "name": "pollutant",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Forurensningsstoff (f.eks. CO2, NOX)",
            "example": "CO2"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Rapporteringsår",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/eu-eprtr/facilities": {
      "get": {
        "tags": [
          "connector:eu-eprtr"
        ],
        "operationId": "get_api_connectors_eu_eprtr_facilities",
        "summary": "GET /api/connectors/eu-eprtr/facilities (#2410) Søk i industri- og avfallsanlegg rapportert til E-PR",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-eprtr/facilities/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 landkode",
            "example": "NO"
          },
          {
            "name": "nace",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "NACE-kode-prefiks",
            "example": "20"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Navn-/operatør-søk",
            "example": "Equinor"
          }
        ]
      }
    },
    "/api/connectors/eu-eprtr/facilities/{facilityId}": {
      "get": {
        "tags": [
          "connector:eu-eprtr"
        ],
        "operationId": "get_api_connectors_eu_eprtr_facilities__facilityId_",
        "summary": "GET /api/connectors/eu-eprtr/facilities/[facilityId] (#2410)",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-eprtr/facilities/[facilityId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEuEprtrFacility",
                  "additionalProperties": false,
                  "description": "Detaljrespons for ett anlegg i E-PRTR (European Pollutant Release and Transfer Register). Kilde: EEA Discomap, lisens CC-BY-4.0.",
                  "required": [
                    "facilityId",
                    "facility"
                  ],
                  "properties": {
                    "facilityId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9._-]{4,32}$",
                      "description": "Trimmet facility-ID fra forespørselen (ekko av path-parameteren).",
                      "example": "NO.CAERS.12345"
                    },
                    "facility": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Normalisert E-PRTR-anlegg (CanonicalEprtrFacility). Alle felt er alltid til stede; tekstfelt uten rådata er null, mens facilityId/facilityName er tomme strenger ved manglende rådata.",
                      "required": [
                        "facilityId",
                        "facilityName",
                        "parentCompanyName",
                        "country",
                        "city",
                        "postalCode",
                        "nace",
                        "naceSectorName",
                        "longitude",
                        "latitude",
                        "regulatoryRegimes",
                        "eprtrAnnexI",
                        "nationalCompanyId",
                        "publicProfileUrl",
                        "source"
                      ],
                      "properties": {
                        "facilityId": {
                          "type": "string",
                          "description": "Normalisert facility-ID (tom streng hvis rådata mangler).",
                          "example": "NO.CAERS.12345"
                        },
                        "facilityName": {
                          "type": "string",
                          "description": "Offisielt anleggsnavn (tom streng hvis rådata mangler).",
                          "example": "Hydro Aluminium Karmøy"
                        },
                        "parentCompanyName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Operatør / morselskap. Null hvis ikke rapportert.",
                          "example": "Norsk Hydro ASA"
                        },
                        "country": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "pattern": "^[A-Z]{2}$",
                          "description": "ISO 3166-1 alpha-2 land. Null hvis ikke rapportert.",
                          "example": "NO"
                        },
                        "city": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "By/sted. Null hvis ikke rapportert.",
                          "example": "Karmøy"
                        },
                        "postalCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Postnummer. Null hvis ikke rapportert.",
                          "example": "4265"
                        },
                        "nace": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "NACE-kode (NACE Rev 2). Null hvis ikke rapportert.",
                          "example": "24.42"
                        },
                        "naceSectorName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "NACE-sektornavn. Null hvis ikke rapportert.",
                          "example": "Industri"
                        },
                        "longitude": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "WGS-84 lengdegrad. Null hvis ikke parsbar.",
                          "example": 5.2833
                        },
                        "latitude": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "WGS-84 breddegrad. Null hvis ikke parsbar.",
                          "example": 59.2833
                        },
                        "regulatoryRegimes": {
                          "type": "array",
                          "description": "Reguleringsregimer anlegget rapporterer under (IED, EPRTR, urban-wastewater m.fl.). Tom array hvis ingen.",
                          "items": {
                            "type": "string",
                            "example": "IED"
                          },
                          "example": [
                            "EPRTR",
                            "IED"
                          ]
                        },
                        "eprtrAnnexI": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "E-PRTR Annex I-aktivitet. Null hvis ikke rapportert.",
                          "example": "2.(c).(i)"
                        },
                        "nationalCompanyId": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Operatørens orgnummer i hjemlandet (Brreg-orgnr i NO). Null hvis ikke rapportert.",
                          "example": "914778271"
                        },
                        "publicProfileUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Dyplenke til anleggets profil i EEA E-PRTR-portalen.",
                          "example": "https://prtr.eea.europa.eu/#/facility?facilityId=NO.CAERS.12345"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "EU-EPRTR"
                          ],
                          "description": "Proveniens (#74 explainability).",
                          "example": "EU-EPRTR"
                        }
                      }
                    }
                  },
                  "example": {
                    "facilityId": "NO.CAERS.12345",
                    "facility": {
                      "facilityId": "NO.CAERS.12345",
                      "facilityName": "Hydro Aluminium Karmøy",
                      "parentCompanyName": "Norsk Hydro ASA",
                      "country": "NO",
                      "city": "Karmøy",
                      "postalCode": "4265",
                      "nace": "24.42",
                      "naceSectorName": "Industri",
                      "longitude": 5.2833,
                      "latitude": 59.2833,
                      "regulatoryRegimes": [
                        "EPRTR",
                        "IED"
                      ],
                      "eprtrAnnexI": "2.(c).(i)",
                      "nationalCompanyId": "914778271",
                      "publicProfileUrl": "https://prtr.eea.europa.eu/#/facility?facilityId=NO.CAERS.12345",
                      "source": "EU-EPRTR"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "facilityId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `facilityId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/eu-eprtr/health": {
      "get": {
        "tags": [
          "connector:eu-eprtr"
        ],
        "operationId": "get_api_connectors_eu_eprtr_health",
        "summary": "GET /api/connectors/eu-eprtr/health (#2410) Default: statisk metadata via `handleEprtrHealth()`.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-eprtr/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eu-ets/allocations": {
      "get": {
        "tags": [
          "connector:eu-ets"
        ],
        "operationId": "get_api_connectors_eu_ets_allocations",
        "summary": "GET /api/connectors/eu-ets/allocations (#2409) Tildelte kvoter (free + total) per anlegg og år.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-ets/allocations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "installationId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på installasjons-ID",
            "example": "12345"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Tildelingsår",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/eu-ets/emissions": {
      "get": {
        "tags": [
          "connector:eu-ets"
        ],
        "operationId": "get_api_connectors_eu_ets_emissions",
        "summary": "GET /api/connectors/eu-ets/emissions (#2409) Verifiserte utslipp og compliance per anlegg og år.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-ets/emissions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "fromYear",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Fra-år (intervall)",
            "example": "2020"
          },
          {
            "name": "installationId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på installasjons-ID",
            "example": "12345"
          },
          {
            "name": "toYear",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Til-år (intervall)",
            "example": "2023"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Enkelt-år",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/eu-ets/health": {
      "get": {
        "tags": [
          "connector:eu-ets"
        ],
        "operationId": "get_api_connectors_eu_ets_health",
        "summary": "GET /api/connectors/eu-ets/health (#2409)",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-ets/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eu-ets/installations": {
      "get": {
        "tags": [
          "connector:eu-ets"
        ],
        "operationId": "get_api_connectors_eu_ets_installations",
        "summary": "GET /api/connectors/eu-ets/installations (#2409) Søk i EU ETS Union Registry-installasjoner.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-ets/installations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 landkode",
            "example": "NO"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst på navn/operatør",
            "example": "cement"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "POWER",
                "INDUSTRY",
                "AVIATION",
                "MARITIME",
                "OTHER"
              ]
            },
            "description": "Installasjonstype",
            "example": "POWER"
          }
        ]
      }
    },
    "/api/connectors/eu-ets/installations/{installationId}": {
      "get": {
        "tags": [
          "connector:eu-ets"
        ],
        "operationId": "get_api_connectors_eu_ets_installations__installationId_",
        "summary": "GET /api/connectors/eu-ets/installations/[installationId] (#2409)",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-ets/installations/[installationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEuEtsInstallation",
                  "additionalProperties": false,
                  "description": "Detalj for én installasjon (anlegg/operatør) i EU ETS Union Registry (EUTL).",
                  "required": [
                    "installationId",
                    "installation"
                  ],
                  "properties": {
                    "installationId": {
                      "type": "string",
                      "pattern": "^[A-Z0-9._-]{3,32}$",
                      "description": "Echo av validert sti-parameter (3–32 alfa-numeriske tegn).",
                      "example": "NO-123"
                    },
                    "installation": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Normalisert installasjon (CanonicalEuEtsInstallation). Anleggsattributter fra EUTL utelatt i kilden settes til null.",
                      "required": [
                        "installationId",
                        "installationName",
                        "accountHolderName",
                        "country",
                        "city",
                        "postalCode",
                        "mainActivity",
                        "installationType",
                        "nationalCompanyId",
                        "phase",
                        "status",
                        "publicProfileUrl",
                        "source"
                      ],
                      "properties": {
                        "installationId": {
                          "type": "string",
                          "description": "Installasjons-ID i EUTL/Union Registry.",
                          "example": "NO-123"
                        },
                        "installationName": {
                          "type": "string",
                          "description": "Anleggsnavn (tom streng hvis ukjent i kilden).",
                          "example": "Mongstad raffineri"
                        },
                        "accountHolderName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Operatør / morselskap (kontoholder).",
                          "example": "Equinor ASA"
                        },
                        "country": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "pattern": "^[A-Z]{2}$",
                          "description": "ISO 3166-1 alpha-2 landkode (store bokstaver).",
                          "example": "NO"
                        },
                        "city": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Anleggets by/sted.",
                          "example": "Mongstad"
                        },
                        "postalCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Anleggets postnummer.",
                          "example": "5954"
                        },
                        "mainActivity": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "EU ETS-aktivitet (Annex I) slik den er oppgitt i EUTL.",
                          "example": "21 Refining of mineral oil"
                        },
                        "installationType": {
                          "type": "string",
                          "enum": [
                            "POWER",
                            "INDUSTRY",
                            "AVIATION",
                            "MARITIME",
                            "OTHER"
                          ],
                          "description": "Utledet anleggstype fra mainActivity (default OTHER ved ukjent).",
                          "example": "INDUSTRY"
                        },
                        "nationalCompanyId": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Operatørens nasjonale orgnr (Brreg/CVR/Bolagsverket).",
                          "example": "923609016"
                        },
                        "phase": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Compliance-fase (f.eks. 4. fase 2021–2030).",
                          "example": "2021-2030"
                        },
                        "status": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Drift-status (aktivt/stengt anlegg) slik EUTL oppgir.",
                          "example": "OPEN"
                        },
                        "publicProfileUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Lenke til offentlig EUTL-kontoprofil.",
                          "example": "https://ec.europa.eu/clima/ets/oha.do?accountID=NO-123"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "EU-ETS"
                          ],
                          "description": "Proveniens (#74 explainability).",
                          "example": "EU-ETS"
                        }
                      }
                    }
                  },
                  "example": {
                    "installationId": "NO-123",
                    "installation": {
                      "installationId": "NO-123",
                      "installationName": "Mongstad raffineri",
                      "accountHolderName": "Equinor ASA",
                      "country": "NO",
                      "city": "Mongstad",
                      "postalCode": "5954",
                      "mainActivity": "21 Refining of mineral oil",
                      "installationType": "INDUSTRY",
                      "nationalCompanyId": "923609016",
                      "phase": "2021-2030",
                      "status": "OPEN",
                      "publicProfileUrl": "https://ec.europa.eu/clima/ets/oha.do?accountID=NO-123",
                      "source": "EU-ETS"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "installationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `installationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/eu-fsf/health": {
      "get": {
        "tags": [
          "connector:eu-fsf"
        ],
        "operationId": "get_api_connectors_eu_fsf_health",
        "summary": "GET /api/connectors/eu-fsf/health EU Financial Sanctions Files connector — sunsettet (#2496).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-fsf/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/eu-fsf/screening": {
      "get": {
        "tags": [
          "connector:eu-fsf"
        ],
        "operationId": "get_api_connectors_eu_fsf_screening",
        "summary": "GET /api/connectors/eu-fsf/screening Sunsettet (#2496): EU FSF offentlig API (webgate.ec.europa.eu/f",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-fsf/screening/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/eu-transparency-register/by-country": {
      "get": {
        "tags": [
          "connector:eu-transparency-register"
        ],
        "operationId": "get_api_connectors_eu_transparency_register_by_country",
        "summary": "GET /api/connectors/eu-transparency-register/by-country (#2391) Lobbyister registrert i et gitt land",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-transparency-register/by-country/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 landkode",
            "example": "NO"
          }
        ]
      }
    },
    "/api/connectors/eu-transparency-register/health": {
      "get": {
        "tags": [
          "connector:eu-transparency-register"
        ],
        "operationId": "get_api_connectors_eu_transparency_register_health",
        "summary": "GET /api/connectors/eu-transparency-register/health (#2391) Default: statisk metadata via `handleEuT",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-transparency-register/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eu-transparency-register/search": {
      "get": {
        "tags": [
          "connector:eu-transparency-register"
        ],
        "operationId": "get_api_connectors_eu_transparency_register_search",
        "summary": "GET /api/connectors/eu-transparency-register/search (#2391) Søk i EU Transparency Register etter lob",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-transparency-register/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "I",
                "II",
                "III",
                "IV",
                "V",
                "VI"
              ]
            },
            "description": "Registerkategori (I-VI)",
            "example": "II"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 landkode",
            "example": "NO"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "25"
            },
            "description": "Maks treff (maks 100)",
            "example": "25"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            },
            "description": "Pagineringsoffset",
            "example": "0"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk (organisasjonsnavn)",
            "example": "energy"
          }
        ]
      }
    },
    "/api/connectors/eu-transparency-register/{registrationId}": {
      "get": {
        "tags": [
          "connector:eu-transparency-register"
        ],
        "operationId": "get_api_connectors_eu_transparency_register__registrationId_",
        "summary": "GET /api/connectors/eu-transparency-register/[registrationId] (#2391) Detalj-oppslag på registrering",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eu-transparency-register/[registrationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEuTransparencyRegistrant",
                  "additionalProperties": false,
                  "description": "Enkelt lobbyist-/interesseorganisasjon fra EU Transparency Register, slått opp på registrerings-ID. Detalj-svaret pakker den normaliserte oppføringen i `entry`.",
                  "required": [
                    "registrationId",
                    "entry"
                  ],
                  "properties": {
                    "registrationId": {
                      "type": "string",
                      "description": "Registrerings-ID slik den ble forespurt (ekko av path-parameteren). EU-mønster `org-versjon` eller rent numerisk.",
                      "pattern": "^([0-9]{6,20}-[0-9]{1,4}|[0-9]{6,20})$",
                      "example": "123456789012-34"
                    },
                    "entry": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Normalisert oppføring (CanonicalLobbyist).",
                      "required": [
                        "registrationId",
                        "name",
                        "acronym",
                        "category",
                        "subCategory",
                        "headOfficeCountry",
                        "headOfficeCity",
                        "website",
                        "registrationDate",
                        "lastUpdate",
                        "euFunding",
                        "lobbyingCosts",
                        "fteEmployees",
                        "mainInterests",
                        "publicProfileUrl",
                        "source"
                      ],
                      "properties": {
                        "registrationId": {
                          "type": "string",
                          "description": "Identifikasjonskode fra feeden (trimmet). Kan være tom streng hvis rådata mangler `identificationCode`.",
                          "example": "123456789012-34"
                        },
                        "name": {
                          "type": "string",
                          "description": "Organisasjonsnavn (trimmet; tom streng hvis ukjent).",
                          "example": "Eksempel Interesseorganisasjon AISBL"
                        },
                        "acronym": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Akronym hvis oppgitt, ellers null.",
                          "example": "EIO"
                        },
                        "category": {
                          "type": "string",
                          "enum": [
                            "I",
                            "II",
                            "III",
                            "IV",
                            "V",
                            "VI",
                            "OTHER"
                          ],
                          "description": "EU-kategori-kortkode. `OTHER` når rådata mangler eller har ukjent kategori.",
                          "example": "II"
                        },
                        "subCategory": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Underkategori-tekst hvis oppgitt, ellers null.",
                          "example": "Trade & business associations"
                        },
                        "headOfficeCountry": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Hovedkontor-land, normalisert til ISO 3166-1 alpha-2 (med EU-aliaser GB→UK, EL→GR). Null hvis ukjent.",
                          "example": "BE"
                        },
                        "headOfficeCity": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Hovedkontor-by, ellers null.",
                          "example": "Brussels"
                        },
                        "website": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Nettsted hvis oppgitt, ellers null.",
                          "example": "https://example.org"
                        },
                        "registrationDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Registreringsdato (ISO-8601 `YYYY-MM-DD`), ellers null.",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "example": "2021-03-15"
                        },
                        "lastUpdate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Siste oppdateringsdato (ISO-8601 `YYYY-MM-DD`), ellers null.",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "example": "2025-01-10"
                        },
                        "euFunding": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "EU-finansiering i EUR (parset fra tekst), ellers null.",
                          "example": 250000
                        },
                        "lobbyingCosts": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Oppgitte lobby-kostnader i EUR (parset fra tekst), ellers null.",
                          "example": 500000
                        },
                        "fteEmployees": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Antall årsverk (FTE) involvert i lobbyvirksomhet, ellers null.",
                          "example": 12
                        },
                        "mainInterests": {
                          "type": "array",
                          "description": "Hovedinteresser / EU-lovforslag, splittet på `;`/`,`. Tom liste hvis ingen er oppgitt.",
                          "items": {
                            "type": "string",
                            "example": "Digital Services Act"
                          },
                          "example": [
                            "Digital Services Act",
                            "AI Act"
                          ]
                        },
                        "publicProfileUrl": {
                          "type": "string",
                          "description": "Lenke til offentlig EU-profil. Faller tilbake til hovedsiden hvis registreringsID mangler.",
                          "example": "https://ec.europa.eu/transparencyregister/public/consultation/displaylobbyist.do?id=123456789012-34"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "EU-TRANSPARENCY-REGISTER"
                          ],
                          "description": "Proveniens (#74 explainability).",
                          "example": "EU-TRANSPARENCY-REGISTER"
                        }
                      }
                    }
                  },
                  "example": {
                    "registrationId": "123456789012-34",
                    "entry": {
                      "registrationId": "123456789012-34",
                      "name": "Eksempel Interesseorganisasjon AISBL",
                      "acronym": "EIO",
                      "category": "II",
                      "subCategory": "Trade & business associations",
                      "headOfficeCountry": "BE",
                      "headOfficeCity": "Brussels",
                      "website": "https://example.org",
                      "registrationDate": "2021-03-15",
                      "lastUpdate": "2025-01-10",
                      "euFunding": 250000,
                      "lobbyingCosts": 500000,
                      "fteEmployees": 12,
                      "mainInterests": [
                        "Digital Services Act",
                        "AI Act"
                      ],
                      "publicProfileUrl": "https://ec.europa.eu/transparencyregister/public/consultation/displaylobbyist.do?id=123456789012-34",
                      "source": "EU-TRANSPARENCY-REGISTER"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "registrationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `registrationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/eurlex-celex/document/{celex}": {
      "get": {
        "tags": [
          "connector:eurlex-celex"
        ],
        "operationId": "get_api_connectors_eurlex_celex_document__celex_",
        "summary": "GET /api/connectors/eurlex-celex/document/{celex} Path-basert CELEX-oppslag (#3224).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurlex-celex/document/[celex]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurlexCelexDocument",
                  "additionalProperties": false,
                  "description": "CELEX-dokument med metadata og deterministisk URL-trio per språk. Designet for compliance-audit-spor (CELEX + kanonisk URL + dato + publisering).",
                  "required": [
                    "celex",
                    "document"
                  ],
                  "properties": {
                    "celex": {
                      "type": "string",
                      "pattern": "^[0-9A-Z]{8,15}$",
                      "description": "Normalisert CELEX-nummer (trimmet + uppercase) som ble slått opp.",
                      "example": "32016R0679"
                    },
                    "document": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Kanonisk dokumentmodell (CelexDocument).",
                      "required": [
                        "celex",
                        "title",
                        "titleLocalized",
                        "type",
                        "publicationDate",
                        "inForceDate",
                        "ojReference",
                        "languageAvailability",
                        "urls",
                        "eeaRelevant",
                        "source"
                      ],
                      "properties": {
                        "celex": {
                          "type": "string",
                          "pattern": "^[0-9A-Z]{8,15}$",
                          "example": "32016R0679"
                        },
                        "title": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Engelsk tittel fra SPARQL (titleEN), eller null hvis ukjent.",
                          "example": "Regulation (EU) 2016/679 of the European Parliament and of the Council"
                        },
                        "titleLocalized": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "required": [
                            "language",
                            "title"
                          ],
                          "description": "Lokalisert tittel hvis tilgjengelig (norsk først), ellers null.",
                          "properties": {
                            "language": {
                              "type": "string",
                              "enum": [
                                "EN",
                                "NO",
                                "SV",
                                "DA",
                                "DE",
                                "FR"
                              ],
                              "description": "Språkkode for den lokaliserte tittelen.",
                              "example": "NO"
                            },
                            "title": {
                              "type": "string",
                              "example": "Personvernforordningen"
                            }
                          }
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "Regulation",
                            "Directive",
                            "Decision",
                            "Recommendation",
                            "Opinion",
                            "Communication",
                            "CaseLaw",
                            "InternationalAgreement",
                            "Other"
                          ],
                          "description": "Dokumenttype utledet fra CELEX-sektor/mønster (inferDocumentType).",
                          "example": "Regulation"
                        },
                        "publicationDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Publiseringsdato (YYYY-MM-DD), eller null hvis ukjent.",
                          "example": "2016-04-27"
                        },
                        "inForceDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Dato dokumentet trådte i kraft (YYYY-MM-DD), eller null.",
                          "example": "2016-05-24"
                        },
                        "ojReference": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Official Journal-referanse, eller null hvis ukjent.",
                          "example": "OJ L 119, 4.5.2016, p. 1–88"
                        },
                        "languageAvailability": {
                          "type": "array",
                          "description": "Språk URL-trioen vil resolve til (default alle seks språk).",
                          "items": {
                            "type": "string",
                            "enum": [
                              "EN",
                              "NO",
                              "SV",
                              "DA",
                              "DE",
                              "FR"
                            ]
                          },
                          "example": [
                            "EN",
                            "NO",
                            "SV",
                            "DA",
                            "DE",
                            "FR"
                          ]
                        },
                        "urls": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "URL-trio (canonical/html/pdf) per språk. Konstrueres deterministisk; språk uten URL-er er utelatt (Partial-record).",
                          "properties": {
                            "EN": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "canonical",
                                "html",
                                "pdf"
                              ],
                              "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                              "properties": {
                                "canonical": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                                },
                                "html": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                                },
                                "pdf": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                                }
                              }
                            },
                            "NO": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "canonical",
                                "html",
                                "pdf"
                              ],
                              "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                              "properties": {
                                "canonical": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                                },
                                "html": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                                },
                                "pdf": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                                }
                              }
                            },
                            "SV": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "canonical",
                                "html",
                                "pdf"
                              ],
                              "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                              "properties": {
                                "canonical": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                                },
                                "html": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                                },
                                "pdf": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                                }
                              }
                            },
                            "DA": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "canonical",
                                "html",
                                "pdf"
                              ],
                              "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                              "properties": {
                                "canonical": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                                },
                                "html": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                                },
                                "pdf": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                                }
                              }
                            },
                            "DE": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "canonical",
                                "html",
                                "pdf"
                              ],
                              "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                              "properties": {
                                "canonical": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                                },
                                "html": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                                },
                                "pdf": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                                }
                              }
                            },
                            "FR": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "canonical",
                                "html",
                                "pdf"
                              ],
                              "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                              "properties": {
                                "canonical": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                                },
                                "html": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                                },
                                "pdf": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                                }
                              }
                            }
                          }
                        },
                        "eeaRelevant": {
                          "type": "boolean",
                          "description": "EØS-relevant flagg, mappet fra SPARQL (false hvis ikke satt).",
                          "example": true
                        },
                        "source": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "fetchedAt",
                            "upstream"
                          ],
                          "description": "Proveniens (#74 explainability).",
                          "properties": {
                            "fetchedAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "ISO-8601 tidsstempel for når dokumentet ble hentet.",
                              "example": "2026-06-24T10:00:00.000Z"
                            },
                            "upstream": {
                              "type": "string",
                              "enum": [
                                "eur-lex-sparql"
                              ],
                              "example": "eur-lex-sparql"
                            }
                          }
                        }
                      }
                    }
                  },
                  "$defs": {
                    "CelexDocumentUrls": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "canonical",
                        "html",
                        "pdf"
                      ],
                      "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                      "properties": {
                        "canonical": {
                          "type": "string",
                          "format": "uri",
                          "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                        },
                        "html": {
                          "type": "string",
                          "format": "uri",
                          "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                        },
                        "pdf": {
                          "type": "string",
                          "format": "uri",
                          "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                        }
                      }
                    }
                  },
                  "example": {
                    "celex": "32016R0679",
                    "document": {
                      "celex": "32016R0679",
                      "title": "Regulation (EU) 2016/679 of the European Parliament and of the Council",
                      "titleLocalized": {
                        "language": "NO",
                        "title": "Personvernforordningen"
                      },
                      "type": "Regulation",
                      "publicationDate": "2016-04-27",
                      "inForceDate": "2016-05-24",
                      "ojReference": "OJ L 119, 4.5.2016, p. 1–88",
                      "languageAvailability": [
                        "EN",
                        "NO",
                        "SV",
                        "DA",
                        "DE",
                        "FR"
                      ],
                      "urls": {
                        "EN": {
                          "canonical": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679",
                          "html": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679",
                          "pdf": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                        },
                        "NO": {
                          "canonical": "https://eur-lex.europa.eu/legal-content/NO/TXT/?uri=CELEX:32016R0679",
                          "html": "https://eur-lex.europa.eu/legal-content/NO/TXT/HTML/?uri=CELEX:32016R0679",
                          "pdf": "https://eur-lex.europa.eu/legal-content/NO/TXT/PDF/?uri=CELEX:32016R0679"
                        }
                      },
                      "eeaRelevant": true,
                      "source": {
                        "fetchedAt": "2026-06-24T10:00:00.000Z",
                        "upstream": "eur-lex-sparql"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "celex",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `celex` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/eurlex-celex/health": {
      "get": {
        "tags": [
          "connector:eurlex-celex"
        ],
        "operationId": "get_api_connectors_eurlex_celex_health",
        "summary": "GET /api/connectors/eurlex-celex/health Health-endepunkt for EUR-Lex CELEX connector (#3224).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurlex-celex/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eurlex-celex/search": {
      "get": {
        "tags": [
          "connector:eurlex-celex"
        ],
        "operationId": "get_api_connectors_eurlex_celex_search",
        "summary": "GET /api/connectors/eurlex-celex/search?q={query}&limit={n} Enkel tittel-fulltekstsøk i EUR-Lex (#32",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurlex-celex/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurlexCelexSearch",
                  "additionalProperties": false,
                  "description": "Søk i EUR-Lex på CELEX-nummer. Treff med CELEX-id, tittel, publiseringsdato og kanonisk URL.",
                  "required": [
                    "query",
                    "count",
                    "results"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "32016R0679"
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "celex",
                          "title",
                          "publicationDate",
                          "canonicalUrl"
                        ],
                        "properties": {
                          "celex": {
                            "type": "string",
                            "example": "32016R0679"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "General Data Protection Regulation"
                          },
                          "publicationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2016-05-04"
                          },
                          "canonicalUrl": {
                            "type": "string",
                            "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "32016R0679",
                    "count": 1,
                    "results": [
                      {
                        "celex": "32016R0679",
                        "title": "General Data Protection Regulation",
                        "publicationDate": "2016-05-04",
                        "canonicalUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Maks antall treff (1–50)",
            "example": "20"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk",
            "example": "GDPR"
          }
        ]
      }
    },
    "/api/connectors/eurlex/document": {
      "get": {
        "tags": [
          "connector:eurlex"
        ],
        "operationId": "get_api_connectors_eurlex_document",
        "summary": "GET /api/connectors/eurlex/document Hent metadata for ett EU-dokument via CELEX-nummer (#1242).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurlex/document/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurlexDocument",
                  "additionalProperties": false,
                  "description": "Normalisert metadata for én EU-rettsakt slått opp via CELEX-nummer (EUR-Lex CELLAR SPARQL).",
                  "required": [
                    "celex",
                    "document"
                  ],
                  "properties": {
                    "celex": {
                      "type": "string",
                      "pattern": "^[0-9A-Z]{8,15}$",
                      "description": "Normalisert (uppercased) CELEX-nummer fra forespørselen.",
                      "example": "32016R0679"
                    },
                    "document": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Normalisert EU-rettsakt (NormalizedEULegalDoc).",
                      "required": [
                        "celexNumber",
                        "title",
                        "titleNO",
                        "docType",
                        "publicationDate",
                        "inForceDate",
                        "eeasRelevant",
                        "fullTextUrl",
                        "summary",
                        "source"
                      ],
                      "properties": {
                        "celexNumber": {
                          "type": "string",
                          "pattern": "^[0-9A-Z]{8,15}$",
                          "description": "CELEX-nummer for dokumentet.",
                          "example": "32016R0679"
                        },
                        "title": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Engelsk tittel (faller tilbake til generisk `title`); `null` hvis ikke funnet.",
                          "example": "Regulation (EU) 2016/679 (General Data Protection Regulation)"
                        },
                        "titleNO": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Norsk tittel hvis tilgjengelig, ellers `null`.",
                          "example": null
                        },
                        "docType": {
                          "type": "string",
                          "enum": [
                            "Regulation",
                            "Directive",
                            "Decision",
                            "Judgment",
                            "Recommendation",
                            "Other"
                          ],
                          "description": "Dokumenttype utledet fra CELEX-nummeret (inferDocType).",
                          "example": "Regulation"
                        },
                        "publicationDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "Publiseringsdato (ISO-8601 dato, tidsdel strippet); `null` hvis ukjent.",
                          "example": "2016-04-27"
                        },
                        "inForceDate": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "Ikrafttredelsesdato (ISO-8601 dato, tidsdel strippet); `null` hvis ukjent.",
                          "example": "2016-05-24"
                        },
                        "eeasRelevant": {
                          "type": "boolean",
                          "description": "Om dokumentet er EØS-relevant (true når SPARQL `eea` = \"true\").",
                          "example": true
                        },
                        "fullTextUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Lenke til fulltekst på EUR-Lex (norsk språkvariant).",
                          "example": "https://eur-lex.europa.eu/legal-content/NO/TXT/?uri=CELEX:32016R0679"
                        },
                        "summary": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Sammendrag (ikke befolket av denne ruten — alltid `null`).",
                          "example": null
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "EUR-LEX"
                          ],
                          "description": "Proveniens (#74 explainability).",
                          "example": "EUR-LEX"
                        }
                      }
                    }
                  },
                  "example": {
                    "celex": "32016R0679",
                    "document": {
                      "celexNumber": "32016R0679",
                      "title": "Regulation (EU) 2016/679 (General Data Protection Regulation)",
                      "titleNO": null,
                      "docType": "Regulation",
                      "publicationDate": "2016-04-27",
                      "inForceDate": "2016-05-24",
                      "eeasRelevant": true,
                      "fullTextUrl": "https://eur-lex.europa.eu/legal-content/NO/TXT/?uri=CELEX:32016R0679",
                      "summary": null,
                      "source": "EUR-LEX"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "celex",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "CELEX-nummer",
            "example": "32016R0679"
          }
        ]
      }
    },
    "/api/connectors/eurlex/health": {
      "get": {
        "tags": [
          "connector:eurlex"
        ],
        "operationId": "get_api_connectors_eurlex_health",
        "summary": "GET /api/connectors/eurlex/health Smoke-endpoint for EUR-Lex CELLAR-connectoren (#1242).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurlex/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eurlex/search": {
      "get": {
        "tags": [
          "connector:eurlex"
        ],
        "operationId": "get_api_connectors_eurlex_search",
        "summary": "GET /api/connectors/eurlex/search Søk i EU-lovgivning via EUR-Lex CELLAR SPARQL (#1242).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurlex/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurlexSearch",
                  "additionalProperties": false,
                  "description": "Søk i EU-rettsakter (EUR-Lex). Treff med CELEX-nummer, dokumenttype, publiseringsdato og fulltekst-URL.",
                  "required": [
                    "query",
                    "type",
                    "count",
                    "results"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "GDPR"
                    },
                    "type": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Ekko av `?type`-filteret (null når ikke oppgitt).",
                      "example": "regulation"
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "celexNumber",
                          "title",
                          "titleNO",
                          "docType",
                          "publicationDate",
                          "inForceDate",
                          "eeasRelevant",
                          "fullTextUrl",
                          "summary",
                          "source"
                        ],
                        "properties": {
                          "celexNumber": {
                            "type": "string",
                            "example": "32016R0679"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "General Data Protection Regulation"
                          },
                          "titleNO": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "docType": {
                            "type": "string",
                            "enum": [
                              "Regulation",
                              "Directive",
                              "Decision",
                              "Judgment",
                              "Recommendation",
                              "Other"
                            ]
                          },
                          "publicationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2016-05-04"
                          },
                          "inForceDate": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "eeasRelevant": {
                            "type": "boolean",
                            "example": false
                          },
                          "fullTextUrl": {
                            "type": "string",
                            "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                          },
                          "summary": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "EUR-LEX"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "GDPR",
                    "type": "regulation",
                    "count": 1,
                    "results": [
                      {
                        "celexNumber": "32016R0679",
                        "title": "General Data Protection Regulation",
                        "titleNO": null,
                        "docType": "Regulation",
                        "publicationDate": "2016-05-04",
                        "inForceDate": null,
                        "eeasRelevant": false,
                        "fullTextUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679",
                        "summary": null,
                        "source": "EUR-LEX"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Maks antall treff",
            "example": "20"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk i EU-rettsakter",
            "example": "data protection"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtrer på rettsakt-type (Regulation/Directive/Decision …)",
            "example": "Regulation"
          }
        ]
      }
    },
    "/api/connectors/eurostat/data": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_data",
        "summary": "GET /api/connectors/eurostat/data?dataset=&geo=&time=&...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/data/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "dataset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Eurostat dataset-kode",
            "example": "nama_10_gdp"
          },
          {
            "name": "geo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Landkode(r), komma-separert (default NO,SE,DK,FI ved ingen filtre)",
            "example": "NO,SE,DK,FI"
          },
          {
            "name": "time",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Tidsperiode eller -intervall (enkeltår eller intervall)",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/eurostat/dataset/{id}/structure": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_dataset__id__structure",
        "summary": "GET /api/connectors/eurostat/dataset/[id]/structure Returnerer datasett-strukturen (DSD / codelists)",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/dataset/[id]/structure/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurostatStructure",
                  "additionalProperties": false,
                  "description": "Dimensjonsstrukturen til et Eurostat-datasett: hver dimensjon med sine kategorier (kode + etikett). Brukes til å bygge gyldige spørringer.",
                  "required": [
                    "dataset",
                    "label",
                    "source",
                    "updated",
                    "dimensions"
                  ],
                  "properties": {
                    "dataset": {
                      "type": "string",
                      "description": "Datasett-kode.",
                      "example": "nama_10_gdp"
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "GDP and main components (output, expenditure and income)"
                    },
                    "source": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Eurostat"
                    },
                    "updated": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-dato for siste oppdatering upstream.",
                      "example": "2025-05-20"
                    },
                    "dimensions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "label",
                          "size",
                          "categories"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "geo"
                          },
                          "label": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Geopolitical entity (reporting)"
                          },
                          "size": {
                            "type": "integer",
                            "example": 37
                          },
                          "categories": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "code",
                                "label"
                              ],
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "example": "NO"
                                },
                                "label": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "Norway"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "dataset": "nama_10_gdp",
                    "label": "GDP and main components",
                    "source": "Eurostat",
                    "updated": "2025-05-20",
                    "dimensions": [
                      {
                        "id": "geo",
                        "label": "Geopolitical entity (reporting)",
                        "size": 2,
                        "categories": [
                          {
                            "code": "NO",
                            "label": "Norway"
                          },
                          {
                            "code": "SE",
                            "label": "Sweden"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/eurostat/datasets": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_datasets",
        "summary": "GET /api/connectors/eurostat/datasets?q=&type=&limit=&offset= Lister Eurostat-katalogen (dataflows/d",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurostatDatasets",
                  "additionalProperties": false,
                  "description": "Paginert utsnitt av Eurostats datasett-katalog (Table of Contents): kode, tittel, type og om datasettet er spørrbart.",
                  "required": [
                    "total",
                    "limit",
                    "offset",
                    "results"
                  ],
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 350
                    },
                    "limit": {
                      "type": "integer",
                      "example": 50
                    },
                    "offset": {
                      "type": "integer",
                      "example": 0
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "code",
                          "title",
                          "type",
                          "queryable"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "nama_10_gdp"
                          },
                          "title": {
                            "type": "string",
                            "example": "GDP and main components"
                          },
                          "type": {
                            "type": "string",
                            "example": "dataset"
                          },
                          "queryable": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "total": 350,
                    "limit": 50,
                    "offset": 0,
                    "results": [
                      {
                        "code": "nama_10_gdp",
                        "title": "GDP and main components",
                        "type": "dataset",
                        "queryable": true
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Maks rader (1–200)",
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Paginerings-offset",
            "example": "0"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-filter på tittel/kode (tom = alle)",
            "example": "gdp"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "dataset",
                "table",
                "folder",
                "all"
              ]
            },
            "description": "TOC-type. Default 'dataset' (kun spørrbare). 'folder' = navigasjonsnoder (ikke slå-opp-bare). 'all' = hele den miksede katalogen",
            "example": "dataset"
          }
        ]
      }
    },
    "/api/connectors/eurostat/gdp": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_gdp",
        "summary": "GET /api/connectors/eurostat/gdp?geo=SE,DK&time=2015:2024 — BNP per capita (#1208).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/gdp/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eurostat/health": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_health",
        "summary": "GET /api/connectors/eurostat/health — Eurostat smoke-route (#1208).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eurostat/inflation": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_inflation",
        "summary": "GET /api/connectors/eurostat/inflation?geo=SE&since=2023-01 — HICP årsendring (#1208).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/inflation/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/eurostat/search": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_search",
        "summary": "GET /api/connectors/eurostat/search?q= — søk i dataset-katalogen (#1208).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorEurostatSearch",
                  "additionalProperties": false,
                  "description": "Fritekstsøk i Eurostats datasett-katalog. Treff med kode, tittel, type og om datasettet er spørrbart.",
                  "required": [
                    "query",
                    "results"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "gdp"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "code",
                          "title",
                          "type",
                          "queryable"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "nama_10_gdp"
                          },
                          "title": {
                            "type": "string",
                            "example": "GDP and main components"
                          },
                          "type": {
                            "type": "string",
                            "example": "dataset"
                          },
                          "queryable": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "gdp",
                    "results": [
                      {
                        "code": "nama_10_gdp",
                        "title": "GDP and main components",
                        "type": "dataset",
                        "queryable": true
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng",
            "example": "gdp"
          }
        ]
      }
    },
    "/api/connectors/eurostat/unemployment": {
      "get": {
        "tags": [
          "connector:eurostat"
        ],
        "operationId": "get_api_connectors_eurostat_unemployment",
        "summary": "GET /api/connectors/eurostat/unemployment?geo=SE,DK&since=2024-01 — arbeidsledighet (#1208).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/eurostat/unemployment/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fhi/health": {
      "get": {
        "tags": [
          "connector:fhi"
        ],
        "operationId": "get_api_connectors_fhi_health",
        "summary": "GET /api/connectors/fhi/health (#2206/#2700/#2776) statistikk.fhi.no har migrert til SPA uten åpen J",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fhi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fhi/health-profiles": {
      "get": {
        "tags": [
          "connector:fhi"
        ],
        "operationId": "get_api_connectors_fhi_health_profiles",
        "summary": "GET /api/connectors/fhi/health-profiles?municipality=0301&year=2023 (#2700/#2776) Folkehelseprofil-d",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fhi/health-profiles/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fhi/msis": {
      "get": {
        "tags": [
          "connector:fhi"
        ],
        "operationId": "get_api_connectors_fhi_msis",
        "summary": "GET /api/connectors/fhi/msis (#2700/#2776) MSIS smittevernstatistikk fra FHI.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fhi/msis/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fi-mml/geocode": {
      "get": {
        "tags": [
          "connector:fi-mml"
        ],
        "operationId": "get_api_connectors_fi_mml_geocode",
        "summary": "GET /api/connectors/fi-mml/geocode?q=Helsinki&lang=fi&limit=10 Adresse- og stedsnavnsøk via Maanmitt",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fi-mml/geocode/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fi-mml/health": {
      "get": {
        "tags": [
          "connector:fi-mml"
        ],
        "operationId": "get_api_connectors_fi_mml_health",
        "summary": "GET /api/connectors/fi-mml/health Smoke-route for FI Maanmittauslaitos Geocoding connector (#747).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fi-mml/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fi-mml/reverse": {
      "get": {
        "tags": [
          "connector:fi-mml"
        ],
        "operationId": "get_api_connectors_fi_mml_reverse",
        "summary": "GET /api/connectors/fi-mml/reverse?lat=60.169&lon=24.938&lang=fi Omvendt geokoding — koordinater til",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fi-mml/reverse/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finansinspektionen-se/health": {
      "get": {
        "tags": [
          "connector:finansinspektionen-se"
        ],
        "operationId": "get_api_connectors_finansinspektionen_se_health",
        "summary": "GET /api/connectors/finansinspektionen-se/health Smoke-endepunkt for Finansinspektionen Sverige-conn",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finansinspektionen-se/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finansinspektionen-se/institutions": {
      "get": {
        "tags": [
          "connector:finansinspektionen-se"
        ],
        "operationId": "get_api_connectors_finansinspektionen_se_institutions",
        "summary": "GET /api/connectors/finansinspektionen-se/institutions?q=&type=&status=&page=&pageSize= Søk i Finans",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finansinspektionen-se/institutions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorFinansinspektionenSeInstitutions",
                  "description": "Liste over foretak under Finansinspektionens tilsyn (Sverige): type, kategori, tillatelse og status.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "name",
                      "orgnr",
                      "type",
                      "category",
                      "licenseType",
                      "status",
                      "tillstandsdatum",
                      "registrationDate",
                      "avregistreringsdatum",
                      "country",
                      "address",
                      "postalCode",
                      "city",
                      "website",
                      "source"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "example": "502017-7691"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Klarna Bank AB"
                      },
                      "orgnr": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "556737-0431"
                      },
                      "type": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Normalisert type der kjent (kreditinstitut/vardepappersbolag/ forsakringsbolag/fondbolag/betaltjanstleverantor/inlaningsforetag/ crowdfunding), ellers rå upstream-streng.",
                        "example": "kreditinstitut"
                      },
                      "category": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "licenseType": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "status": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "«aktiv»/«avregistrerad» der kjent, ellers rå streng.",
                        "example": "aktiv"
                      },
                      "tillstandsdatum": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "2017-06-19"
                      },
                      "registrationDate": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "avregistreringsdatum": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "country": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "SE"
                      },
                      "address": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "postalCode": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "11134"
                      },
                      "city": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Stockholm"
                      },
                      "website": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "https://www.klarna.com"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "finansinspektionen-se"
                        ]
                      }
                    }
                  },
                  "example": [
                    {
                      "id": "502017-7691",
                      "name": "Klarna Bank AB",
                      "orgnr": "556737-0431",
                      "type": "kreditinstitut",
                      "category": "Bank",
                      "licenseType": "Bankoktroj",
                      "status": "aktiv",
                      "tillstandsdatum": "2017-06-19",
                      "registrationDate": null,
                      "avregistreringsdatum": null,
                      "country": "SE",
                      "address": "Sveavägen 46",
                      "postalCode": "11134",
                      "city": "Stockholm",
                      "website": "https://www.klarna.com",
                      "source": "finansinspektionen-se"
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finanstilsynet-dk/health": {
      "get": {
        "tags": [
          "connector:finanstilsynet-dk"
        ],
        "operationId": "get_api_connectors_finanstilsynet_dk_health",
        "summary": "GET /api/connectors/finanstilsynet-dk/health (#2359, #2784, #1200) api.finanstilsynet.dk returnerer ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet-dk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finanstilsynet-dk/virksomheder": {
      "get": {
        "tags": [
          "connector:finanstilsynet-dk"
        ],
        "operationId": "get_api_connectors_finanstilsynet_dk_virksomheder",
        "summary": "GET /api/connectors/finanstilsynet-dk/virksomheder?q=&type=&status=&page=&pageSize= Søk i Finanstils",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet-dk/virksomheder/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finanstilsynet/datasets": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_datasets",
        "summary": "GET /api/connectors/finanstilsynet/datasets[?category=konsesjon|revisor|dokumenter|tilsynssaker|stat",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorFinanstilsynetDatasets",
                  "additionalProperties": false,
                  "description": "Katalog over Finanstilsynets datasett med tilgangsmetode (REST/CKAN/browser/PDF) og eventuelt KETL-endepunkt. Statisk discovery-liste, valgfritt kategori-filtrert.",
                  "required": [
                    "source",
                    "datasets",
                    "total",
                    "fetchedAt"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "finanstilsynet"
                      ]
                    },
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "category",
                          "description",
                          "url",
                          "access",
                          "lastVerified"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "konsesjonsregister"
                          },
                          "navn": {
                            "type": "string",
                            "example": "Konsesjonsregisteret"
                          },
                          "category": {
                            "type": "string",
                            "enum": [
                              "konsesjon",
                              "revisor",
                              "dokumenter",
                              "tilsynssaker",
                              "statistikk"
                            ]
                          },
                          "description": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string",
                            "example": "https://www.finanstilsynet.no/konsesjonsregister"
                          },
                          "access": {
                            "type": "string",
                            "enum": [
                              "rest_open",
                              "ckan_data_norge",
                              "browser_only",
                              "pdf_bulk"
                            ]
                          },
                          "ketlEndpoint": {
                            "type": "string",
                            "example": "/api/connectors/finanstilsynet/konsesjon/{orgnr}"
                          },
                          "lastVerified": {
                            "type": "string",
                            "example": "2026-06-01"
                          }
                        }
                      }
                    },
                    "filter": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Til stede kun når et kategori-filter er anvendt.",
                      "properties": {
                        "category": {
                          "type": "string"
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 5
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "source": "finanstilsynet",
                    "datasets": [
                      {
                        "id": "konsesjonsregister",
                        "navn": "Konsesjonsregisteret",
                        "category": "konsesjon",
                        "description": "Registrerte konsesjoner.",
                        "url": "https://www.finanstilsynet.no/konsesjonsregister",
                        "access": "rest_open",
                        "ketlEndpoint": "/api/connectors/finanstilsynet/konsesjon/{orgnr}",
                        "lastVerified": "2026-06-01"
                      }
                    ],
                    "total": 1,
                    "fetchedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finanstilsynet/documents": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_documents",
        "summary": "GET /api/connectors/finanstilsynet/documents?q=&type=&year= Søk i Finanstilsynets dokumentarkiv — ru",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/documents/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-søk i tittel og sammendrag",
            "example": "kapitalkrav"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "rundskriv | rapport | hoering | veiledning | vedtak | pressemelding | annet",
            "example": "rundskriv"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Årstall",
            "example": "2024"
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/finanstilsynet/health": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_health",
        "summary": "GET /api/connectors/finanstilsynet/health Finanstilsynet-connector health (#3398, #3412).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/finanstilsynet/konsesjon": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_konsesjon",
        "summary": "GET /api/connectors/finanstilsynet/konsesjon",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/konsesjon/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ConnectorFinanstilsynetKonsesjon",
                  "description": "Konsesjons-respons fra Finanstilsynet. `?orgnr=` gir ett direkte oppslag;\n`?navn=` gir et paginert søketreff. `source` er alltid `\"finanstilsynet\"`.\n",
                  "oneOf": [
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Direkte oppslag på organisasjonsnummer.",
                      "required": [
                        "konsesjonshaver",
                        "source"
                      ],
                      "properties": {
                        "konsesjonshaver": {
                          "type": "object",
                          "title": "ConnectorFinanstilsynetKonsesjonshaver",
                          "additionalProperties": false,
                          "description": "Konsesjonshaver under tilsyn av Finanstilsynet, med konsesjonene foretaket innehar.",
                          "required": [
                            "orgnr",
                            "konsesjoner"
                          ],
                          "properties": {
                            "orgnr": {
                              "type": "string",
                              "pattern": "^\\d{9}$",
                              "description": "Norsk organisasjonsnummer (9 siffer).",
                              "example": "923609016"
                            },
                            "navn": {
                              "type": "string",
                              "description": "Foretaksnavn.",
                              "example": "EQUINOR ASA"
                            },
                            "organisasjonsform": {
                              "type": "string",
                              "example": "ASA"
                            },
                            "forretningsadresse": {
                              "type": "object",
                              "additionalProperties": false,
                              "description": "Forretningsadresse (alle delfelter er valgfrie).",
                              "properties": {
                                "adresse": {
                                  "type": "string",
                                  "example": "Forusbeen 50"
                                },
                                "postnummer": {
                                  "type": "string",
                                  "example": "4035"
                                },
                                "poststed": {
                                  "type": "string",
                                  "example": "STAVANGER"
                                },
                                "land": {
                                  "type": "string",
                                  "example": "Norge"
                                }
                              }
                            },
                            "konsesjoner": {
                              "type": "array",
                              "description": "Konsesjonene foretaket innehar (kan være tom).",
                              "items": {
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                  "type"
                                ],
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "Konsesjonstype (Finanstilsynets kodeverk).",
                                    "example": "forsikringsformidling"
                                  },
                                  "beskrivelse": {
                                    "type": "string",
                                    "description": "Fritekst-beskrivelse av tillatelsen.",
                                    "example": "Forsikringsformidling"
                                  },
                                  "tildelt": {
                                    "type": "string",
                                    "description": "Tildelt-dato (ISO-8601 `YYYY-MM-DD`).",
                                    "example": "2010-01-01"
                                  },
                                  "bortfalt": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "Bortfalt-dato (ISO-8601), eller null hvis fortsatt aktiv.",
                                    "example": null
                                  },
                                  "vedtaksnr": {
                                    "type": "string",
                                    "description": "Internt vedtaksnummer hos Finanstilsynet.",
                                    "example": "12/3456"
                                  }
                                }
                              }
                            },
                            "sistOppdatert": {
                              "type": "string",
                              "description": "Tidspunkt for siste oppdatering hos Finanstilsynet (ISO-8601).",
                              "example": "2026-05-01"
                            }
                          },
                          "example": {
                            "orgnr": "923609016",
                            "navn": "EQUINOR ASA",
                            "organisasjonsform": "ASA",
                            "forretningsadresse": {
                              "adresse": "Forusbeen 50",
                              "postnummer": "4035",
                              "poststed": "STAVANGER",
                              "land": "Norge"
                            },
                            "konsesjoner": [
                              {
                                "type": "forsikringsformidling",
                                "beskrivelse": "Forsikringsformidling",
                                "tildelt": "2010-01-01",
                                "bortfalt": null,
                                "vedtaksnr": "12/3456"
                              }
                            ],
                            "sistOppdatert": "2026-05-01"
                          }
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "finanstilsynet"
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Paginert søketreff på navn.",
                      "required": [
                        "treff",
                        "source"
                      ],
                      "properties": {
                        "totalt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Totalt antall treff (hvis upstream oppgir det).",
                          "example": 12
                        },
                        "treff": {
                          "type": "array",
                          "description": "Konsesjonshavere som matcher søket (siden).",
                          "items": {
                            "type": "object",
                            "title": "ConnectorFinanstilsynetKonsesjonshaver",
                            "additionalProperties": false,
                            "description": "Konsesjonshaver under tilsyn av Finanstilsynet, med konsesjonene foretaket innehar.",
                            "required": [
                              "orgnr",
                              "konsesjoner"
                            ],
                            "properties": {
                              "orgnr": {
                                "type": "string",
                                "pattern": "^\\d{9}$",
                                "description": "Norsk organisasjonsnummer (9 siffer).",
                                "example": "923609016"
                              },
                              "navn": {
                                "type": "string",
                                "description": "Foretaksnavn.",
                                "example": "EQUINOR ASA"
                              },
                              "organisasjonsform": {
                                "type": "string",
                                "example": "ASA"
                              },
                              "forretningsadresse": {
                                "type": "object",
                                "additionalProperties": false,
                                "description": "Forretningsadresse (alle delfelter er valgfrie).",
                                "properties": {
                                  "adresse": {
                                    "type": "string",
                                    "example": "Forusbeen 50"
                                  },
                                  "postnummer": {
                                    "type": "string",
                                    "example": "4035"
                                  },
                                  "poststed": {
                                    "type": "string",
                                    "example": "STAVANGER"
                                  },
                                  "land": {
                                    "type": "string",
                                    "example": "Norge"
                                  }
                                }
                              },
                              "konsesjoner": {
                                "type": "array",
                                "description": "Konsesjonene foretaket innehar (kan være tom).",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "required": [
                                    "type"
                                  ],
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "Konsesjonstype (Finanstilsynets kodeverk).",
                                      "example": "forsikringsformidling"
                                    },
                                    "beskrivelse": {
                                      "type": "string",
                                      "description": "Fritekst-beskrivelse av tillatelsen.",
                                      "example": "Forsikringsformidling"
                                    },
                                    "tildelt": {
                                      "type": "string",
                                      "description": "Tildelt-dato (ISO-8601 `YYYY-MM-DD`).",
                                      "example": "2010-01-01"
                                    },
                                    "bortfalt": {
                                      "type": [
                                        "string",
                                        "null"
                                      ],
                                      "description": "Bortfalt-dato (ISO-8601), eller null hvis fortsatt aktiv.",
                                      "example": null
                                    },
                                    "vedtaksnr": {
                                      "type": "string",
                                      "description": "Internt vedtaksnummer hos Finanstilsynet.",
                                      "example": "12/3456"
                                    }
                                  }
                                }
                              },
                              "sistOppdatert": {
                                "type": "string",
                                "description": "Tidspunkt for siste oppdatering hos Finanstilsynet (ISO-8601).",
                                "example": "2026-05-01"
                              }
                            },
                            "example": {
                              "orgnr": "923609016",
                              "navn": "EQUINOR ASA",
                              "organisasjonsform": "ASA",
                              "forretningsadresse": {
                                "adresse": "Forusbeen 50",
                                "postnummer": "4035",
                                "poststed": "STAVANGER",
                                "land": "Norge"
                              },
                              "konsesjoner": [
                                {
                                  "type": "forsikringsformidling",
                                  "beskrivelse": "Forsikringsformidling",
                                  "tildelt": "2010-01-01",
                                  "bortfalt": null,
                                  "vedtaksnr": "12/3456"
                                }
                              ],
                              "sistOppdatert": "2026-05-01"
                            }
                          }
                        },
                        "next": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Markør for neste side, eller null."
                        },
                        "forrige": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Markør for forrige side, eller null."
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "finanstilsynet"
                          ]
                        }
                      }
                    }
                  ],
                  "example": {
                    "source": "finanstilsynet",
                    "konsesjonshaver": {
                      "orgnr": "923609016",
                      "navn": "EQUINOR ASA",
                      "organisasjonsform": "ASA",
                      "konsesjoner": [
                        {
                          "type": "forsikringsformidling",
                          "beskrivelse": "Forsikringsformidling",
                          "tildelt": "2010-01-01",
                          "bortfalt": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "navn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Foretaksnavn (konsesjon-søk krever navn; bruk orgnr for direkte oppslag)",
            "example": "DNB"
          },
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Org.nr for direkte oppslag",
            "example": "984851006"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Konsesjonstype-filter",
            "example": "bank"
          }
        ]
      }
    },
    "/api/connectors/finanstilsynet/revisor": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_revisor",
        "summary": "GET /api/connectors/finanstilsynet/revisor",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/revisor/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "navn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Revisornavn",
            "example": "Deloitte"
          },
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer",
            "example": "980211282"
          },
          {
            "name": "revisornr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Revisornummer (minst ett av revisornr/orgnr/navn)",
            "example": "12345"
          }
        ]
      }
    },
    "/api/connectors/finanstilsynet/rundskriv": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_rundskriv",
        "summary": "GET /api/connectors/finanstilsynet/rundskriv",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/rundskriv/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/finanstilsynet/tilsynssaker": {
      "get": {
        "tags": [
          "connector:finanstilsynet"
        ],
        "operationId": "get_api_connectors_finanstilsynet_tilsynssaker",
        "summary": "GET /api/connectors/finanstilsynet/tilsynssaker?orgnr=&virksomhetnavn=&sakstype= Søk i Finanstilsyne",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/finanstilsynet/tilsynssaker/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer)",
            "example": "984851006"
          },
          {
            "name": "sakstype",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Type tilsynssak",
            "example": "stedlig tilsyn"
          },
          {
            "name": "virksomhetnavn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-søk på virksomhetsnavn",
            "example": "DNB"
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/fiskeridirektoratet/aquaculture": {
      "get": {
        "tags": [
          "connector:fiskeridirektoratet"
        ],
        "operationId": "get_api_connectors_fiskeridirektoratet_aquaculture",
        "summary": "GET /api/connectors/fiskeridirektoratet/aquaculture?municipality=0301&species=LAKS Henter akvakultur",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fiskeridirektoratet/aquaculture/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fiskeridirektoratet/health": {
      "get": {
        "tags": [
          "connector:fiskeridirektoratet"
        ],
        "operationId": "get_api_connectors_fiskeridirektoratet_health",
        "summary": "GET /api/connectors/fiskeridirektoratet/health Default: statisk status — pub-aqua er et åpent NLOD-A",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fiskeridirektoratet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fiskeridirektoratet/licenses": {
      "get": {
        "tags": [
          "connector:fiskeridirektoratet"
        ],
        "operationId": "get_api_connectors_fiskeridirektoratet_licenses",
        "summary": "GET /api/connectors/fiskeridirektoratet/licenses?limit=50 Henter akvakulturtillatelser fra Fiskeridi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fiskeridirektoratet/licenses/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fiskeridirektoratet/sites/{siteNr}": {
      "get": {
        "tags": [
          "connector:fiskeridirektoratet"
        ],
        "operationId": "get_api_connectors_fiskeridirektoratet_sites__siteNr_",
        "summary": "GET /api/connectors/fiskeridirektoratet/sites/{siteNr} Henter én akvakulturlokalitet fra Fiskeridire",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fiskeridirektoratet/sites/[siteNr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorFiskeridirektoratetSite",
                  "additionalProperties": false,
                  "description": "Normalisert akvakulturlokalitet fra Fiskeridirektoratets pub-aqua-register. Råformen (engelske felt + nøstet `placement`/`connections`) mappes til denne stabile formen. Mange felt er nullbare fordi kilden utelater/mangler verdien.",
                  "required": [
                    "siteId",
                    "name",
                    "licenses"
                  ],
                  "properties": {
                    "siteId": {
                      "type": "string",
                      "description": "Lokalitetsnummer (siteNr) som streng. Tom streng hvis kilden mangler siteNr. Gyldig forespørsel krever siteNr 10000–99999.",
                      "example": "12345"
                    },
                    "name": {
                      "type": "string",
                      "description": "Lokalitetsnavn. Tom streng hvis kilden mangler navn.",
                      "example": "Storvika"
                    },
                    "permitNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tillatelsesnummer fra aktiv tilknytning (connection), ellers første tilknytning. Null hvis ingen tilknytning har licenseNr.",
                      "example": "AB0001"
                    },
                    "municipalityCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kommunenummer fra `placement.municipalityCode`.",
                      "example": "1108"
                    },
                    "municipalityName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kommunenavn fra `placement.municipalityName`.",
                      "example": "Sandnes"
                    },
                    "countyCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Fylkesnummer fra `placement.countyCode`.",
                      "example": "11"
                    },
                    "countyName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Fylkesnavn fra `placement.countyName`.",
                      "example": "Rogaland"
                    },
                    "species": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Art (menneskelesbar) fra `speciesTypeValue`, ellers første verdi i `speciesTypes`.",
                      "example": "Laks"
                    },
                    "speciesCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Artskode fra `speciesType`, ellers første verdi i `speciesTypes`.",
                      "example": "SALMON"
                    },
                    "capacity": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Kapasitet (MTB e.l.) fra `capacity`. Null hvis ikke oppgitt.",
                      "example": 3120
                    },
                    "production": {
                      "type": "null",
                      "description": "Alltid null fra denne kilden — pub-aqua eksponerer ikke faktisk produksjon. Feltet beholdes for UI-kontrakt.",
                      "example": null
                    },
                    "permitType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tillatelsestype fra `firstClearanceTypeValue`, ellers `firstClearanceType`.",
                      "example": "Kommersiell matfisk"
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Avledet status fra `connections`. `AKTIV` hvis minst én aktiv tilknytning, ellers `INAKTIV`. Null hvis ingen tilknytninger.",
                      "enum": [
                        "AKTIV",
                        "INAKTIV",
                        null
                      ],
                      "example": "AKTIV"
                    },
                    "lat": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Breddegrad (WGS84) fra `latitude`.",
                      "example": 58.8524
                    },
                    "lon": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Lengdegrad (WGS84) fra `longitude`.",
                      "example": 5.7361
                    },
                    "placementType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Plasseringstype fra `placementTypeValue`, ellers `placementType` (f.eks. sjø/land).",
                      "example": "Sjø"
                    },
                    "prodAreaName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Produksjonsområde-navn fra `placement.prodAreaName`.",
                      "example": "Produksjonsområde 2"
                    },
                    "prodAreaStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Produksjonsområde-status fra `placement.prodAreaStatus`.",
                      "example": "Grønn"
                    },
                    "capacityUnit": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kapasitetsenhet fra `capacityUnitType`.",
                      "example": "TONN"
                    },
                    "licenses": {
                      "type": "array",
                      "description": "Unike tillatelsesnumre fra `connections[].licenseNr`. Tom liste hvis ingen tilknytninger.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "AB0001",
                        "AB0002"
                      ]
                    }
                  },
                  "example": {
                    "siteId": "12345",
                    "name": "Storvika",
                    "permitNumber": "AB0001",
                    "municipalityCode": "1108",
                    "municipalityName": "Sandnes",
                    "countyCode": "11",
                    "countyName": "Rogaland",
                    "species": "Laks",
                    "speciesCode": "SALMON",
                    "capacity": 3120,
                    "production": null,
                    "permitType": "Kommersiell matfisk",
                    "status": "AKTIV",
                    "lat": 58.8524,
                    "lon": 5.7361,
                    "placementType": "Sjø",
                    "prodAreaName": "Produksjonsområde 2",
                    "prodAreaStatus": "Grønn",
                    "capacityUnit": "TONN",
                    "licenses": [
                      "AB0001",
                      "AB0002"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "siteNr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `siteNr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/folkeregisteret/health": {
      "get": {
        "tags": [
          "connector:folkeregisteret"
        ],
        "operationId": "get_api_connectors_folkeregisteret_health",
        "summary": "GET /api/connectors/folkeregisteret/health Smoke-route for Folkeregisteret-connector (#1065).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/folkeregisteret/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/folkeregisteret/person": {
      "get": {
        "tags": [
          "connector:folkeregisteret"
        ],
        "operationId": "get_api_connectors_folkeregisteret_person",
        "summary": "GET /api/connectors/folkeregisteret/person?fnr=12345678901 Persondata fra Skatteetatens Folkeregiste",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/folkeregisteret/person/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "fnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fødselsnummer (11 siffer) — krever Maskinporten"
          }
        ]
      }
    },
    "/api/connectors/forsakringskassan/datasets": {
      "get": {
        "tags": [
          "connector:forsakringskassan"
        ],
        "operationId": "get_api_connectors_forsakringskassan_datasets",
        "summary": "GET /api/connectors/forsakringskassan/datasets",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/forsakringskassan/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorForsakringskassanDatasets",
                  "additionalProperties": false,
                  "description": "Liste over Försäkringskassans (Sverige) tilgjengelige datasett med oppdateringsfrekvens. `stale:true` signaliserer et cache-fallback-svar.",
                  "required": [
                    "source",
                    "rows"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "forsakringskassan"
                      ]
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "description",
                          "updateFrequency"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "sjukpenning"
                          },
                          "name": {
                            "type": "string",
                            "example": "Sjukpenning"
                          },
                          "description": {
                            "type": "string"
                          },
                          "updateFrequency": {
                            "type": "string",
                            "example": "Månedlig"
                          },
                          "lastUpdated": {
                            "type": "string",
                            "example": "2025-06-01"
                          }
                        }
                      }
                    },
                    "stale": {
                      "type": "boolean",
                      "enum": [
                        true
                      ],
                      "description": "Til stede og `true` kun ved stale-cache-fallback."
                    }
                  },
                  "example": {
                    "source": "forsakringskassan",
                    "rows": [
                      {
                        "id": "sjukpenning",
                        "name": "Sjukpenning",
                        "description": "Utbetald sjukpenning per månad.",
                        "updateFrequency": "Månedlig",
                        "lastUpdated": "2025-06-01"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/forsakringskassan/disability": {
      "get": {
        "tags": [
          "connector:forsakringskassan"
        ],
        "operationId": "get_api_connectors_forsakringskassan_disability",
        "summary": "GET /api/connectors/forsakringskassan/disability?county=&year=",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/forsakringskassan/disability/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/forsakringskassan/health": {
      "get": {
        "tags": [
          "connector:forsakringskassan"
        ],
        "operationId": "get_api_connectors_forsakringskassan_health",
        "summary": "GET /api/connectors/forsakringskassan/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/forsakringskassan/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/forsakringskassan/parental-leave": {
      "get": {
        "tags": [
          "connector:forsakringskassan"
        ],
        "operationId": "get_api_connectors_forsakringskassan_parental_leave",
        "summary": "GET /api/connectors/forsakringskassan/parental-leave?county=&year=",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/forsakringskassan/parental-leave/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/forsakringskassan/sick-leave": {
      "get": {
        "tags": [
          "connector:forsakringskassan"
        ],
        "operationId": "get_api_connectors_forsakringskassan_sick_leave",
        "summary": "GET /api/connectors/forsakringskassan/sick-leave?county=&year=&month=",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/forsakringskassan/sick-leave/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fri-nettleie/health": {
      "get": {
        "tags": [
          "connector:fri-nettleie"
        ],
        "operationId": "get_api_connectors_fri_nettleie_health",
        "summary": "GET /api/connectors/fri-nettleie/health Helse med ekte GitHub-ping (#2756): rapporterer `degraded` n",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fri-nettleie/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fri-nettleie/operators": {
      "get": {
        "tags": [
          "connector:fri-nettleie"
        ],
        "operationId": "get_api_connectors_fri_nettleie_operators",
        "summary": "GET /api/connectors/fri-nettleie/operators fri-nettleie — liste over netteiere/operatører.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fri-nettleie/operators/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/fri-nettleie/search": {
      "get": {
        "tags": [
          "connector:fri-nettleie"
        ],
        "operationId": "get_api_connectors_fri_nettleie_search",
        "summary": "GET /api/connectors/fri-nettleie/search?query=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fri-nettleie/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorFriNettleieSearch",
                  "additionalProperties": false,
                  "description": "Søk etter norske nettleie-operatører (nettselskaper). Treff med operatør-id, navn og organisasjonsnummer.",
                  "required": [
                    "query",
                    "operators"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "elvia"
                    },
                    "operators": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "operatorId",
                          "name",
                          "orgnr"
                        ],
                        "properties": {
                          "operatorId": {
                            "type": "string",
                            "example": "elvia"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Elvia AS"
                          },
                          "orgnr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "980489698"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "elvia",
                    "operators": [
                      {
                        "operatorId": "elvia",
                        "name": "Elvia AS",
                        "orgnr": "980489698"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng (minst 2 tegn)",
            "example": "elvia"
          }
        ]
      }
    },
    "/api/connectors/fri-nettleie/tariffs": {
      "get": {
        "tags": [
          "connector:fri-nettleie"
        ],
        "operationId": "get_api_connectors_fri_nettleie_tariffs",
        "summary": "GET /api/connectors/fri-nettleie/tariffs?operator=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/fri-nettleie/tariffs/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "operator",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Nettselskap/operatør-ID",
            "example": "elvia"
          }
        ]
      }
    },
    "/api/connectors/frivillighetsregisteret/health": {
      "get": {
        "tags": [
          "connector:frivillighetsregisteret"
        ],
        "operationId": "get_api_connectors_frivillighetsregisteret_health",
        "summary": "GET /api/connectors/frivillighetsregisteret/health Default: statisk status (åpen API, alltid 200).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/frivillighetsregisteret/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/frivillighetsregisteret/organisasjon/{orgnr}": {
      "get": {
        "tags": [
          "connector:frivillighetsregisteret"
        ],
        "operationId": "get_api_connectors_frivillighetsregisteret_organisasjon__orgnr_",
        "summary": "GET /api/connectors/frivillighetsregisteret/organisasjon/{orgnr} Slår opp én frivillig organisasjon ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/frivillighetsregisteret/organisasjon/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorFrivillighetsregisteretOrg",
                  "additionalProperties": false,
                  "description": "Én frivillig organisasjon slått opp på org.nr i Frivillighetsregisteret.",
                  "required": [
                    "organisasjonsnummer",
                    "frivilligOrganisasjonsstatus",
                    "kontonummer",
                    "innfoertDato",
                    "foersteGangInnfoert",
                    "grasrotandel",
                    "regnskapsrapportering",
                    "vedtekter",
                    "icnpoKategorier",
                    "paategninger",
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "Brønnøysundregistrene — Frivillighetsregisteret"
                      ],
                      "description": "Proveniens-etikett (#74 explainability). Konstant SOURCE_LABEL fra normalize.ts.",
                      "example": "Brønnøysundregistrene — Frivillighetsregisteret"
                    },
                    "organisasjonsnummer": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummer — nøyaktig 9 siffer.",
                      "example": "970208922"
                    },
                    "frivilligOrganisasjonsstatus": {
                      "type": "string",
                      "description": "Registreringsstatus i Frivillighetsregisteret.",
                      "example": "REGISTRERT"
                    },
                    "kontonummer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kontonummer for grasrotandel-utbetaling. `null` hvis ikke utfylt.",
                      "example": "12345678901"
                    },
                    "innfoertDato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Dato organisasjonen sist ble innført i registeret (ISO-8601). `null` hvis ikke satt.",
                      "example": "2020-03-15"
                    },
                    "foersteGangInnfoert": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Dato organisasjonen første gang ble innført (ISO-8601). `null` hvis ikke satt.",
                      "example": "2009-01-01"
                    },
                    "grasrotandel": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Grasrotandel-status. `null` hvis upstream ikke har data.",
                      "required": [
                        "deltarI",
                        "utestengelsesperiode"
                      ],
                      "properties": {
                        "deltarI": {
                          "type": "boolean",
                          "description": "Om organisasjonen deltar i grasrotandel-ordningen.",
                          "example": true
                        },
                        "utestengelsesperiode": {
                          "description": "Eventuell utestengelsesperiode (opak upstream-verdi). Typisk `null`.",
                          "nullable": true,
                          "example": null
                        }
                      }
                    },
                    "regnskapsrapportering": {
                      "description": "Regnskapsrapportering (opak upstream-verdi, ikke videre normalisert). `null` hvis ikke utfylt.",
                      "nullable": true,
                      "example": null
                    },
                    "vedtekter": {
                      "description": "Vedtekter (opak upstream-verdi, ikke videre normalisert). `null` hvis ikke utfylt.",
                      "nullable": true,
                      "example": null
                    },
                    "icnpoKategorier": {
                      "type": "array",
                      "description": "ICNPO-kategorier, beriket med norske navn der upstream mangler `navn`. Tom array hvis ingen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én ICNPO-kategori (International Classification of Non-Profit Organizations).",
                        "required": [
                          "kategori",
                          "icnpoNummer",
                          "navn",
                          "rekkefoelge"
                        ],
                        "properties": {
                          "kategori": {
                            "type": "string",
                            "description": "Enum-streng fra upstream, f.eks. `ICNPOKategori.X`.",
                            "example": "ICNPOKategori.SOSIALE_TJENESTER"
                          },
                          "icnpoNummer": {
                            "type": "string",
                            "description": "4-sifret ICNPO-kode.",
                            "example": "4100"
                          },
                          "navn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Norsk kategorinavn. Beriket fra ICNPO-mapping når upstream ga `null`; kan fortsatt være `null` for ukjente koder.",
                            "example": "Sosiale tjenester"
                          },
                          "rekkefoelge": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Visningsrekkefølge.",
                            "example": 0
                          },
                          "_links": {
                            "type": "object",
                            "additionalProperties": true,
                            "description": "HAL-lenker for kategorien (valgfritt, opakt)."
                          }
                        }
                      }
                    },
                    "paategninger": {
                      "type": "array",
                      "description": "Påtegninger på organisasjonen (opak upstream-struktur). Tom array hvis ingen.",
                      "items": {},
                      "example": []
                    },
                    "_links": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "HAL-lenker fra upstream. Utelatt når upstream ikke ga noen.",
                      "example": {
                        "self": {
                          "href": "https://data.brreg.no/frivillighetsregisteret/api/frivillige-organisasjoner/970208922"
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "Brønnøysundregistrene — Frivillighetsregisteret",
                    "organisasjonsnummer": "970208922",
                    "frivilligOrganisasjonsstatus": "REGISTRERT",
                    "kontonummer": "12345678901",
                    "innfoertDato": "2020-03-15",
                    "foersteGangInnfoert": "2009-01-01",
                    "grasrotandel": {
                      "deltarI": true,
                      "utestengelsesperiode": null
                    },
                    "regnskapsrapportering": null,
                    "vedtekter": null,
                    "icnpoKategorier": [
                      {
                        "kategori": "ICNPOKategori.SOSIALE_TJENESTER",
                        "icnpoNummer": "4100",
                        "navn": "Sosiale tjenester",
                        "rekkefoelge": 0
                      }
                    ],
                    "paategninger": [],
                    "_links": {
                      "self": {
                        "href": "https://data.brreg.no/frivillighetsregisteret/api/frivillige-organisasjoner/970208922"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/frivillighetsregisteret/organisasjoner": {
      "get": {
        "tags": [
          "connector:frivillighetsregisteret"
        ],
        "operationId": "get_api_connectors_frivillighetsregisteret_organisasjoner",
        "summary": "GET /api/connectors/frivillighetsregisteret/organisasjoner?navn=&organisasjonsnummer=&size= Søk i Fr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/frivillighetsregisteret/organisasjoner/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Keyset-paginering: `nextCursor` fra forrige svar (upstream `searchAfter`). Erstatter sidenummer — `page`/`offset` er ikke støttet.",
            "example": "811555312"
          },
          {
            "name": "navn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ekte navnesøk (via Enhetsregisteret-kryssoppslag)",
            "example": "Røde Kors"
          },
          {
            "name": "organisasjonsnummer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Direkte org.nr-oppslag",
            "example": "810098252"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Maks antall treff"
          }
        ]
      }
    },
    "/api/connectors/frost/health": {
      "get": {
        "tags": [
          "connector:frost"
        ],
        "operationId": "get_api_connectors_frost_health",
        "summary": "GET /api/connectors/frost/health Default: statisk status (ok/not_configured avhengig av FROST_CLIENT",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/frost/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/frost/klimanormaler": {
      "get": {
        "tags": [
          "connector:frost"
        ],
        "operationId": "get_api_connectors_frost_klimanormaler",
        "summary": "GET /api/connectors/frost/klimanormaler Henter 30-årige klimanormaler (1991–2020) for en norsk by vi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/frost/klimanormaler/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/frost/observations": {
      "get": {
        "tags": [
          "connector:frost"
        ],
        "operationId": "get_api_connectors_frost_observations",
        "summary": "GET /api/connectors/frost/observations Henter historiske værobservasjoner fra MET Norway Frost API.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/frost/observations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ft-oda/cases": {
      "get": {
        "tags": [
          "connector:ft-oda"
        ],
        "operationId": "get_api_connectors_ft_oda_cases",
        "summary": "GET /api/connectors/ft-oda/cases",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ft-oda/cases/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ft-oda/documents": {
      "get": {
        "tags": [
          "connector:ft-oda"
        ],
        "operationId": "get_api_connectors_ft_oda_documents",
        "summary": "GET /api/connectors/ft-oda/documents",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ft-oda/documents/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ft-oda/health": {
      "get": {
        "tags": [
          "connector:ft-oda"
        ],
        "operationId": "get_api_connectors_ft_oda_health",
        "summary": "GET /api/connectors/ft-oda/health Deep probe for Folketing Åbne Data (#2041, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ft-oda/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ft-oda/members": {
      "get": {
        "tags": [
          "connector:ft-oda"
        ],
        "operationId": "get_api_connectors_ft_oda_members",
        "summary": "GET /api/connectors/ft-oda/members",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ft-oda/members/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ft-oda/votes": {
      "get": {
        "tags": [
          "connector:ft-oda"
        ],
        "operationId": "get_api_connectors_ft_oda_votes",
        "summary": "GET /api/connectors/ft-oda/votes",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ft-oda/votes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/geodatastyrelsen/adresse/{id}": {
      "get": {
        "tags": [
          "connector:geodatastyrelsen"
        ],
        "operationId": "get_api_connectors_geodatastyrelsen_adresse__id_",
        "summary": "GET /api/connectors/geodatastyrelsen/adresse/{id} Henter én dansk adresse på DAWA-UUID.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/geodatastyrelsen/adresse/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGeodatastyrelsenAdresse",
                  "additionalProperties": false,
                  "description": "Kanonisk dansk adresse (DAWA / Danmarks Adressers Web API) slått opp på DAWA-UUID. Koordinater er WGS84 (EPSG:4326): x = lengdegrad, y = breddegrad.",
                  "required": [
                    "id",
                    "betegnelse",
                    "vejnavn",
                    "husnr",
                    "etage",
                    "doer",
                    "supplerendebynavn",
                    "postnr",
                    "postnrnavn",
                    "kommunekode",
                    "x",
                    "y",
                    "href",
                    "source"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "DAWA-UUID for adressen. Null hvis upstream mangler id.",
                      "example": "0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b"
                    },
                    "betegnelse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sammensatt adressebetegnelse fra DAWA.",
                      "example": "Rådhuspladsen 1, 1550 København V"
                    },
                    "vejnavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Gate-/vejnavn.",
                      "example": "Rådhuspladsen"
                    },
                    "husnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Husnummer (kan inkludere bokstav-suffix).",
                      "example": "1"
                    },
                    "etage": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Etasje. Null for reverse-geokodede adgangsadresser.",
                      "example": "2"
                    },
                    "doer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Dør-/leilighetsangivelse (DAWA-feltet `dør`).",
                      "example": "tv"
                    },
                    "supplerendebynavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Supplerende bynavn (bydel/landsby).",
                      "example": "Indre By"
                    },
                    "postnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Postnummer (4 siffer).",
                      "pattern": "^\\d{4}$",
                      "example": "1550"
                    },
                    "postnrnavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Poststedsnavn.",
                      "example": "København V"
                    },
                    "kommunekode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Dansk kommunekode (4 siffer).",
                      "pattern": "^\\d{4}$",
                      "example": "0101"
                    },
                    "x": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "WGS84 lengdegrad (longitude). Null uten matrikkelført punkt.",
                      "example": 12.5683
                    },
                    "y": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "WGS84 breddegrad (latitude). Null uten matrikkelført punkt.",
                      "example": 55.6759
                    },
                    "href": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lenke til adresse-ressursen hos DAWA.",
                      "example": "https://api.dataforsyningen.dk/adresser/0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "geodatastyrelsen"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "geodatastyrelsen"
                    }
                  },
                  "example": {
                    "id": "0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b",
                    "betegnelse": "Rådhuspladsen 1, 1550 København V",
                    "vejnavn": "Rådhuspladsen",
                    "husnr": "1",
                    "etage": null,
                    "doer": null,
                    "supplerendebynavn": null,
                    "postnr": "1550",
                    "postnrnavn": "København V",
                    "kommunekode": "0101",
                    "x": 12.5683,
                    "y": 55.6759,
                    "href": "https://api.dataforsyningen.dk/adresser/0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b",
                    "source": "geodatastyrelsen"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/geodatastyrelsen/adresser": {
      "get": {
        "tags": [
          "connector:geodatastyrelsen"
        ],
        "operationId": "get_api_connectors_geodatastyrelsen_adresser",
        "summary": "GET /api/connectors/geodatastyrelsen/adresser?q=&per_side= Fritekst-adressesøk i DAWA (Danmarks Adre",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/geodatastyrelsen/adresser/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "husnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Husnummer",
            "example": "1"
          },
          {
            "name": "kommunekode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommunekode",
            "example": "0101"
          },
          {
            "name": "postnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Postnummer",
            "example": "1550"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk (eller bruk vejnavn/postnr for strukturert søk)",
            "example": "Rådhuspladsen"
          },
          {
            "name": "vejnavn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Vejnavn",
            "example": "Rådhuspladsen"
          }
        ]
      }
    },
    "/api/connectors/geodatastyrelsen/health": {
      "get": {
        "tags": [
          "connector:geodatastyrelsen"
        ],
        "operationId": "get_api_connectors_geodatastyrelsen_health",
        "summary": "GET /api/connectors/geodatastyrelsen/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/geodatastyrelsen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/geodatastyrelsen/kommuner": {
      "get": {
        "tags": [
          "connector:geodatastyrelsen"
        ],
        "operationId": "get_api_connectors_geodatastyrelsen_kommuner",
        "summary": "GET /api/connectors/geodatastyrelsen/kommuner?q= Kommuneoversikt fra DAWA.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/geodatastyrelsen/kommuner/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/geodatastyrelsen/reverse": {
      "get": {
        "tags": [
          "connector:geodatastyrelsen"
        ],
        "operationId": "get_api_connectors_geodatastyrelsen_reverse",
        "summary": "GET /api/connectors/geodatastyrelsen/reverse?x=&y= Reverse geocoding via DAWA — finner nærmeste adga",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/geodatastyrelsen/reverse/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (x)",
            "example": "12.57"
          },
          {
            "name": "y",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (y)",
            "example": "55.67"
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/bic": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_bic",
        "summary": "GET /api/connectors/gleif-lei/bic?bic=XXXXXXXX — slå opp LEI via BIC (#1209).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/bic/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "bic",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Z0-9]{8}([A-Z0-9]{3})?$"
            },
            "description": "BIC/SWIFT-kode (8 eller 11 tegn)",
            "example": "DNBANOKKXXX"
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/by-orgnr": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_by_orgnr",
        "summary": "GET /api/connectors/gleif-lei/by-orgnr?orgnr=923609016 — omvendt oppslag orgnr → LEI (#3480).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/by-orgnr/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer)",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/health": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_health",
        "summary": "GET /api/connectors/gleif-lei/health — GLEIF LEI smoke-route (#1209).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/gleif-lei/isin": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_isin",
        "summary": "GET /api/connectors/gleif-lei/isin?isin=XXXXXXXXXXXX — slå opp LEI via ISIN (#1209).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/isin/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "isin",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Z0-9]{12}$"
            },
            "description": "ISIN (12 tegn)",
            "example": "NO0010096985"
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/records": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_records",
        "summary": "GET /api/connectors/gleif-lei/records — søk LEI-records (#1209).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/records/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGleifLeiSearchPage",
                  "additionalProperties": false,
                  "description": "Paginert søkeside med LEI-records fra GLEIF. Hver record er en normalisert juridisk entitet.",
                  "required": [
                    "records",
                    "total",
                    "page",
                    "pageSize"
                  ],
                  "properties": {
                    "records": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "lei",
                          "address"
                        ],
                        "properties": {
                          "lei": {
                            "type": "string",
                            "example": "5967007LIEEXZXHKQU17"
                          },
                          "legalName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Equinor ASA"
                          },
                          "jurisdiction": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NO"
                          },
                          "registeredAs": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "923609016"
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "lines",
                              "city",
                              "country",
                              "postalCode"
                            ],
                            "properties": {
                              "lines": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "Forusbeen 50"
                                ]
                              },
                              "city": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Stavanger"
                              },
                              "country": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "NO"
                              },
                              "postalCode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "4035"
                              }
                            }
                          },
                          "entityStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ACTIVE"
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "GENERAL"
                          },
                          "registrationStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ISSUED"
                          },
                          "initialRegistrationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2012-11-30T00:00:00.000Z"
                          },
                          "lastUpdateDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-15T00:00:00.000Z"
                          },
                          "nextRenewalDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2026-01-15T00:00:00.000Z"
                          },
                          "managingLou": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "529900T8BM49AURSDO55"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 42
                    },
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "pageSize": {
                      "type": "integer",
                      "example": 10
                    }
                  },
                  "example": {
                    "records": [
                      {
                        "lei": "5967007LIEEXZXHKQU17",
                        "legalName": "Equinor ASA",
                        "jurisdiction": "NO",
                        "registeredAs": "923609016",
                        "address": {
                          "lines": [
                            "Forusbeen 50"
                          ],
                          "city": "Stavanger",
                          "country": "NO",
                          "postalCode": "4035"
                        },
                        "entityStatus": "ACTIVE",
                        "category": "GENERAL",
                        "registrationStatus": "ISSUED",
                        "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
                        "lastUpdateDate": "2025-01-15T00:00:00.000Z",
                        "nextRenewalDate": "2026-01-15T00:00:00.000Z",
                        "managingLou": "529900T8BM49AURSDO55"
                      }
                    ],
                    "total": 42,
                    "page": 1,
                    "pageSize": 10
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166 jurisdiksjonskode",
            "example": "NO"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Juridisk navn (minst én av name/registeredAs/jurisdiction)",
            "example": "Equinor"
          },
          {
            "name": "registeredAs",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Nasjonalt register-ID",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/records/{lei}": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_records__lei_",
        "summary": "GET /api/connectors/gleif-lei/records/[lei] — hent enkelt LEI-record (#1209).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/records/[lei]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGleifLeiRecord",
                  "additionalProperties": false,
                  "description": "Normalisert LEI-record fra GLEIF (Global Legal Entity Identifier Foundation). Alle skalarfelt utenom `lei` og `address` kan være null når GLEIF utelater dem.",
                  "required": [
                    "lei",
                    "address"
                  ],
                  "properties": {
                    "lei": {
                      "type": "string",
                      "pattern": "^[0-9A-Z]{18}[0-9]{2}$",
                      "description": "ISO 17442 Legal Entity Identifier (20 tegn, siste 2 er kontrollsiffer).",
                      "example": "5967007LIEEXZXHKQU17"
                    },
                    "legalName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Registrert juridisk navn.",
                      "example": "Equinor ASA"
                    },
                    "jurisdiction": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO 3166-1 alpha-2-jurisdiksjon for registrering.",
                      "example": "NO"
                    },
                    "registeredAs": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Registreringsnummer i nasjonalt foretaksregister (f.eks. orgnr).",
                      "example": "923609016"
                    },
                    "address": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Juridisk adresse. Alltid til stede; underfelt kan være tomme/null.",
                      "required": [
                        "lines",
                        "city",
                        "country",
                        "postalCode"
                      ],
                      "properties": {
                        "lines": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Adresselinjer (tom array hvis ukjent).",
                          "example": [
                            "Forusbeen 50"
                          ]
                        },
                        "city": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "STAVANGER"
                        },
                        "country": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "ISO 3166-1 alpha-2-landkode.",
                          "example": "NO"
                        },
                        "postalCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "4035"
                        }
                      }
                    },
                    "entityStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Operasjonell status for entiteten i GLEIF.",
                      "example": "ACTIVE"
                    },
                    "category": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Entitetskategori fra GLEIF (f.eks. GENERAL, FUND, BRANCH).",
                      "example": "GENERAL"
                    },
                    "registrationStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Status på selve LEI-registreringen.",
                      "example": "ISSUED"
                    },
                    "initialRegistrationDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tidspunkt for første LEI-registrering (ISO-8601).",
                      "example": "2012-11-30T00:00:00.000Z"
                    },
                    "lastUpdateDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Siste oppdatering av recorden (ISO-8601).",
                      "example": "2025-01-15T00:00:00.000Z"
                    },
                    "nextRenewalDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Neste fornyelsesfrist for LEI-en (ISO-8601).",
                      "example": "2026-01-15T00:00:00.000Z"
                    },
                    "managingLou": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "LEI til Local Operating Unit som forvalter recorden.",
                      "example": "529900T8BM49AURSDO55"
                    }
                  },
                  "example": {
                    "lei": "5967007LIEEXZXHKQU17",
                    "legalName": "Equinor ASA",
                    "jurisdiction": "NO",
                    "registeredAs": "923609016",
                    "address": {
                      "lines": [
                        "Forusbeen 50"
                      ],
                      "city": "STAVANGER",
                      "country": "NO",
                      "postalCode": "4035"
                    },
                    "entityStatus": "ACTIVE",
                    "category": "GENERAL",
                    "registrationStatus": "ISSUED",
                    "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
                    "lastUpdateDate": "2025-01-15T00:00:00.000Z",
                    "nextRenewalDate": "2026-01-15T00:00:00.000Z",
                    "managingLou": "529900T8BM49AURSDO55"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lei",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `lei` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/records/{lei}/{kind}": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_records__lei___kind_",
        "summary": "GET /api/connectors/gleif-lei/records/[lei]/[kind] — konsernrelasjoner (#1209).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/records/[lei]/[kind]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGleifLeiRelationship",
                  "additionalProperties": false,
                  "description": "LEI-relasjoner for en entitet: direkte/ultimat foreldre eller barn. `related` er tom når ingen relasjon finnes (ikke en feil).",
                  "required": [
                    "lei",
                    "kind",
                    "related"
                  ],
                  "properties": {
                    "lei": {
                      "type": "string",
                      "example": "5967007LIEEXZXHKQU17"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "direct-parent",
                        "ultimate-parent",
                        "direct-children",
                        "ultimate-children"
                      ]
                    },
                    "related": {
                      "type": "array",
                      "description": "Relaterte LEI-records (samme form som enkelt-record-oppslaget).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "lei",
                          "address"
                        ],
                        "properties": {
                          "lei": {
                            "type": "string",
                            "example": "529900T8BM49AURSDO55"
                          },
                          "legalName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Equinor Energy AS"
                          },
                          "jurisdiction": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NO"
                          },
                          "registeredAs": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "948041525"
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "lines",
                              "city",
                              "country",
                              "postalCode"
                            ],
                            "properties": {
                              "lines": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "Forusbeen 50"
                                ]
                              },
                              "city": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Stavanger"
                              },
                              "country": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "NO"
                              },
                              "postalCode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "4035"
                              }
                            }
                          },
                          "entityStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ACTIVE"
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "GENERAL"
                          },
                          "registrationStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ISSUED"
                          },
                          "initialRegistrationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2012-11-30T00:00:00.000Z"
                          },
                          "lastUpdateDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-15T00:00:00.000Z"
                          },
                          "nextRenewalDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2026-01-15T00:00:00.000Z"
                          },
                          "managingLou": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "529900T8BM49AURSDO55"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "lei": "5967007LIEEXZXHKQU17",
                    "kind": "direct-children",
                    "related": [
                      {
                        "lei": "529900T8BM49AURSDO55",
                        "legalName": "Equinor Energy AS",
                        "jurisdiction": "NO",
                        "registeredAs": "948041525",
                        "address": {
                          "lines": [
                            "Forusbeen 50"
                          ],
                          "city": "Stavanger",
                          "country": "NO",
                          "postalCode": "4035"
                        },
                        "entityStatus": "ACTIVE",
                        "category": "GENERAL",
                        "registrationStatus": "ISSUED",
                        "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
                        "lastUpdateDate": "2025-01-15T00:00:00.000Z",
                        "nextRenewalDate": "2026-01-15T00:00:00.000Z",
                        "managingLou": "529900T8BM49AURSDO55"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lei",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `lei` — se connector-dokumentasjon for format."
          },
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `kind` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/search": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei_search",
        "summary": "GET /api/connectors/gleif-lei/search?q=Equinor — fulltekst-søk i LEI-records via GLEIF `filter[fullt",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGleifLeiSearchPage",
                  "additionalProperties": false,
                  "description": "Paginert søkeside med LEI-records fra GLEIF. Hver record er en normalisert juridisk entitet.",
                  "required": [
                    "records",
                    "total",
                    "page",
                    "pageSize"
                  ],
                  "properties": {
                    "records": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "lei",
                          "address"
                        ],
                        "properties": {
                          "lei": {
                            "type": "string",
                            "example": "5967007LIEEXZXHKQU17"
                          },
                          "legalName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Equinor ASA"
                          },
                          "jurisdiction": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NO"
                          },
                          "registeredAs": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "923609016"
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "lines",
                              "city",
                              "country",
                              "postalCode"
                            ],
                            "properties": {
                              "lines": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "Forusbeen 50"
                                ]
                              },
                              "city": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Stavanger"
                              },
                              "country": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "NO"
                              },
                              "postalCode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "4035"
                              }
                            }
                          },
                          "entityStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ACTIVE"
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "GENERAL"
                          },
                          "registrationStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ISSUED"
                          },
                          "initialRegistrationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2012-11-30T00:00:00.000Z"
                          },
                          "lastUpdateDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-15T00:00:00.000Z"
                          },
                          "nextRenewalDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2026-01-15T00:00:00.000Z"
                          },
                          "managingLou": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "529900T8BM49AURSDO55"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 42
                    },
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "pageSize": {
                      "type": "integer",
                      "example": 10
                    }
                  },
                  "example": {
                    "records": [
                      {
                        "lei": "5967007LIEEXZXHKQU17",
                        "legalName": "Equinor ASA",
                        "jurisdiction": "NO",
                        "registeredAs": "923609016",
                        "address": {
                          "lines": [
                            "Forusbeen 50"
                          ],
                          "city": "Stavanger",
                          "country": "NO",
                          "postalCode": "4035"
                        },
                        "entityStatus": "ACTIVE",
                        "category": "GENERAL",
                        "registrationStatus": "ISSUED",
                        "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
                        "lastUpdateDate": "2025-01-15T00:00:00.000Z",
                        "nextRenewalDate": "2026-01-15T00:00:00.000Z",
                        "managingLou": "529900T8BM49AURSDO55"
                      }
                    ],
                    "total": 42,
                    "page": 1,
                    "pageSize": 10
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Sidetall (paginering).",
            "example": "1"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Treff per side.",
            "example": "10"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fulltekst-søketerm (min. 2 tegn) — selskapsnavn.",
            "example": "Equinor"
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/{lei}": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei__lei_",
        "summary": "GET /api/connectors/gleif-lei/[lei] — direkte LEI-oppslag (#3071).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/[lei]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGleifLeiRecord",
                  "additionalProperties": false,
                  "description": "Normalisert LEI-record fra GLEIF (Global Legal Entity Identifier Foundation). Alle skalarfelt utenom `lei` og `address` kan være null når GLEIF utelater dem.",
                  "required": [
                    "lei",
                    "address"
                  ],
                  "properties": {
                    "lei": {
                      "type": "string",
                      "pattern": "^[0-9A-Z]{18}[0-9]{2}$",
                      "description": "ISO 17442 Legal Entity Identifier (20 tegn, siste 2 er kontrollsiffer).",
                      "example": "5967007LIEEXZXHKQU17"
                    },
                    "legalName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Registrert juridisk navn.",
                      "example": "Equinor ASA"
                    },
                    "jurisdiction": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO 3166-1 alpha-2-jurisdiksjon for registrering.",
                      "example": "NO"
                    },
                    "registeredAs": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Registreringsnummer i nasjonalt foretaksregister (f.eks. orgnr).",
                      "example": "923609016"
                    },
                    "address": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Juridisk adresse. Alltid til stede; underfelt kan være tomme/null.",
                      "required": [
                        "lines",
                        "city",
                        "country",
                        "postalCode"
                      ],
                      "properties": {
                        "lines": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Adresselinjer (tom array hvis ukjent).",
                          "example": [
                            "Forusbeen 50"
                          ]
                        },
                        "city": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "STAVANGER"
                        },
                        "country": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "ISO 3166-1 alpha-2-landkode.",
                          "example": "NO"
                        },
                        "postalCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "4035"
                        }
                      }
                    },
                    "entityStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Operasjonell status for entiteten i GLEIF.",
                      "example": "ACTIVE"
                    },
                    "category": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Entitetskategori fra GLEIF (f.eks. GENERAL, FUND, BRANCH).",
                      "example": "GENERAL"
                    },
                    "registrationStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Status på selve LEI-registreringen.",
                      "example": "ISSUED"
                    },
                    "initialRegistrationDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tidspunkt for første LEI-registrering (ISO-8601).",
                      "example": "2012-11-30T00:00:00.000Z"
                    },
                    "lastUpdateDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Siste oppdatering av recorden (ISO-8601).",
                      "example": "2025-01-15T00:00:00.000Z"
                    },
                    "nextRenewalDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Neste fornyelsesfrist for LEI-en (ISO-8601).",
                      "example": "2026-01-15T00:00:00.000Z"
                    },
                    "managingLou": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "LEI til Local Operating Unit som forvalter recorden.",
                      "example": "529900T8BM49AURSDO55"
                    }
                  },
                  "example": {
                    "lei": "5967007LIEEXZXHKQU17",
                    "legalName": "Equinor ASA",
                    "jurisdiction": "NO",
                    "registeredAs": "923609016",
                    "address": {
                      "lines": [
                        "Forusbeen 50"
                      ],
                      "city": "STAVANGER",
                      "country": "NO",
                      "postalCode": "4035"
                    },
                    "entityStatus": "ACTIVE",
                    "category": "GENERAL",
                    "registrationStatus": "ISSUED",
                    "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
                    "lastUpdateDate": "2025-01-15T00:00:00.000Z",
                    "nextRenewalDate": "2026-01-15T00:00:00.000Z",
                    "managingLou": "529900T8BM49AURSDO55"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lei",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `lei` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/gleif-lei/{lei}/relationships/{kind}": {
      "get": {
        "tags": [
          "connector:gleif-lei"
        ],
        "operationId": "get_api_connectors_gleif_lei__lei__relationships__kind_",
        "summary": "GET /api/connectors/gleif-lei/[lei]/relationships/[kind] — LEI-relasjoner (#3071).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/gleif-lei/[lei]/relationships/[kind]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorGleifLeiRelationship",
                  "additionalProperties": false,
                  "description": "LEI-relasjoner for en entitet: direkte/ultimat foreldre eller barn. `related` er tom når ingen relasjon finnes (ikke en feil).",
                  "required": [
                    "lei",
                    "kind",
                    "related"
                  ],
                  "properties": {
                    "lei": {
                      "type": "string",
                      "example": "5967007LIEEXZXHKQU17"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "direct-parent",
                        "ultimate-parent",
                        "direct-children",
                        "ultimate-children"
                      ]
                    },
                    "related": {
                      "type": "array",
                      "description": "Relaterte LEI-records (samme form som enkelt-record-oppslaget).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "lei",
                          "address"
                        ],
                        "properties": {
                          "lei": {
                            "type": "string",
                            "example": "529900T8BM49AURSDO55"
                          },
                          "legalName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Equinor Energy AS"
                          },
                          "jurisdiction": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NO"
                          },
                          "registeredAs": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "948041525"
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "lines",
                              "city",
                              "country",
                              "postalCode"
                            ],
                            "properties": {
                              "lines": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "Forusbeen 50"
                                ]
                              },
                              "city": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Stavanger"
                              },
                              "country": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "NO"
                              },
                              "postalCode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "4035"
                              }
                            }
                          },
                          "entityStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ACTIVE"
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "GENERAL"
                          },
                          "registrationStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "ISSUED"
                          },
                          "initialRegistrationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2012-11-30T00:00:00.000Z"
                          },
                          "lastUpdateDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-15T00:00:00.000Z"
                          },
                          "nextRenewalDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2026-01-15T00:00:00.000Z"
                          },
                          "managingLou": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "529900T8BM49AURSDO55"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "lei": "5967007LIEEXZXHKQU17",
                    "kind": "direct-children",
                    "related": [
                      {
                        "lei": "529900T8BM49AURSDO55",
                        "legalName": "Equinor Energy AS",
                        "jurisdiction": "NO",
                        "registeredAs": "948041525",
                        "address": {
                          "lines": [
                            "Forusbeen 50"
                          ],
                          "city": "Stavanger",
                          "country": "NO",
                          "postalCode": "4035"
                        },
                        "entityStatus": "ACTIVE",
                        "category": "GENERAL",
                        "registrationStatus": "ISSUED",
                        "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
                        "lastUpdateDate": "2025-01-15T00:00:00.000Z",
                        "nextRenewalDate": "2026-01-15T00:00:00.000Z",
                        "managingLou": "529900T8BM49AURSDO55"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lei",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `lei` — se connector-dokumentasjon for format."
          },
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `kind` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/hagstofa-is/health": {
      "get": {
        "tags": [
          "connector:hagstofa-is"
        ],
        "operationId": "get_api_connectors_hagstofa_is_health",
        "summary": "GET /api/connectors/hagstofa-is/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/hagstofa-is/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/hagstofa-is/tables": {
      "get": {
        "tags": [
          "connector:hagstofa-is"
        ],
        "operationId": "get_api_connectors_hagstofa_is_tables",
        "summary": "GET /api/connectors/hagstofa-is/tables",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/hagstofa-is/tables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/health-summary": {
      "get": {
        "tags": [
          "connector:health-summary"
        ],
        "operationId": "get_api_connectors_health_summary",
        "summary": "GET /api/connectors/health-summary Stabil alias for `/api/v1/_meta/health-summary` — fan-outer over ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/health-summary/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/health-summary/degraded": {
      "get": {
        "tags": [
          "connector:health-summary"
        ],
        "operationId": "get_api_connectors_health_summary_degraded",
        "summary": "GET /api/connectors/health-summary/degraded  (#2832) Returnerer kun connectors som ikke er \"ok\" — eg",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/health-summary/degraded/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/health-summary/health": {
      "get": {
        "tags": [
          "connector:health-summary"
        ],
        "operationId": "get_api_connectors_health_summary_health",
        "summary": "GET /api/connectors/health-summary/health Standard health-subroute for `health-summary` meta-connect",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/health-summary/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/health-summary/summary": {
      "get": {
        "tags": [
          "connector:health-summary"
        ],
        "operationId": "get_api_connectors_health_summary_summary",
        "summary": "GET /api/connectors/health-summary/summary  (#2832) Aggregert systemoversikt med per-kategori-breakd",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/health-summary/summary/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/helfo/gp-list": {
      "get": {
        "tags": [
          "connector:helfo"
        ],
        "operationId": "get_api_connectors_helfo_gp_list",
        "summary": "GET /api/connectors/helfo/gp-list",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helfo/gp-list/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/helfo/health": {
      "get": {
        "tags": [
          "connector:helfo"
        ],
        "operationId": "get_api_connectors_helfo_health",
        "summary": "GET /api/connectors/helfo/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helfo/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/helfo/hpr/{hprNr}": {
      "get": {
        "tags": [
          "connector:helfo"
        ],
        "operationId": "get_api_connectors_helfo_hpr__hprNr_",
        "summary": "GET /api/connectors/helfo/hpr/[hprNr] Henter helsepersonelldata fra Helsepersonellregisteret (HPR).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helfo/hpr/[hprNr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorHelfoHpr",
                  "additionalProperties": false,
                  "description": "Person fra Helsepersonellregisteret (HPR) med autorisasjoner, godkjenninger\nog eventuelle suspensjoner.\n",
                  "required": [
                    "hprNummer",
                    "navn",
                    "fornavn",
                    "etternavn",
                    "autorisasjoner",
                    "godkjenninger",
                    "suspensjoner"
                  ],
                  "properties": {
                    "hprNummer": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "HPR-nummer (null hvis ukjent).",
                      "example": 1234567
                    },
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Kari Nordmann"
                    },
                    "fornavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Kari"
                    },
                    "etternavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Nordmann"
                    },
                    "autorisasjoner": {
                      "type": "array",
                      "description": "Autorisasjoner personen innehar.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "helsepersonellkategori",
                          "autorisasjonsstatus",
                          "gyldigTil"
                        ],
                        "properties": {
                          "helsepersonellkategori": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Lege"
                          },
                          "autorisasjonsstatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Aktiv"
                          },
                          "gyldigTil": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Gyldig til-dato (ISO-8601), eller null hvis uten utløp.",
                            "example": null
                          }
                        }
                      }
                    },
                    "godkjenninger": {
                      "type": "array",
                      "description": "Spesialitets-godkjenninger.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "spesialitet",
                          "gyldigTil"
                        ],
                        "properties": {
                          "spesialitet": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Indremedisin"
                          },
                          "gyldigTil": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": null
                          }
                        }
                      }
                    },
                    "suspensjoner": {
                      "type": "array",
                      "description": "Eventuelle suspensjoner (tom for personell uten suspensjon).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "suspensjonskode",
                          "gyldigTil"
                        ],
                        "properties": {
                          "suspensjonskode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "B1"
                          },
                          "gyldigTil": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2027-01-01"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "hprNummer": 1234567,
                    "navn": "Kari Nordmann",
                    "fornavn": "Kari",
                    "etternavn": "Nordmann",
                    "autorisasjoner": [
                      {
                        "helsepersonellkategori": "Lege",
                        "autorisasjonsstatus": "Aktiv",
                        "gyldigTil": null
                      }
                    ],
                    "godkjenninger": [
                      {
                        "spesialitet": "Indremedisin",
                        "gyldigTil": null
                      }
                    ],
                    "suspensjoner": []
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "hprNr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `hprNr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/helsedir/atc": {
      "get": {
        "tags": [
          "connector:helsedir"
        ],
        "operationId": "get_api_connectors_helsedir_atc",
        "summary": "GET /api/connectors/helsedir/atc Index-rute for ATC-kodeverket.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helsedir/atc/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/helsedir/atc/search": {
      "get": {
        "tags": [
          "connector:helsedir"
        ],
        "operationId": "get_api_connectors_helsedir_atc_search",
        "summary": "GET /api/connectors/helsedir/atc/search?query=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helsedir/atc/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ATC-kode eller legemiddel-/virkestoffnavn (matcher kode eller navn)",
            "example": "paracetamol"
          }
        ]
      }
    },
    "/api/connectors/helsedir/guidelines": {
      "get": {
        "tags": [
          "connector:helsedir"
        ],
        "operationId": "get_api_connectors_helsedir_guidelines",
        "summary": "GET /api/connectors/helsedir/guidelines Helsedirektoratet HAPI — retningslinje-liste.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helsedir/guidelines/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/helsedir/guidelines/{id}": {
      "get": {
        "tags": [
          "connector:helsedir"
        ],
        "operationId": "get_api_connectors_helsedir_guidelines__id_",
        "summary": "GET /api/connectors/helsedir/guidelines/[id] Helsedirektoratet HAPI — én retningslinje.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helsedir/guidelines/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorHelsedirGuideline",
                  "additionalProperties": false,
                  "description": "Detalj-svar for én klinisk retningslinje (Helsedirektoratet HAPI).",
                  "required": [
                    "guideline"
                  ],
                  "properties": {
                    "guideline": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Normalisert retningslinje. Kun `id` er garantert satt i 200-svaret; øvrige felt er `null` når kilden ikke oppgir dem.",
                      "required": [
                        "id",
                        "title",
                        "status",
                        "publishedAt",
                        "sourceUrl"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^[A-Za-z0-9._:-]{1,80}$",
                          "description": "Retningslinje-ID (matcher request-pathen, GUIDELINE_ID_RX).",
                          "example": "diabetes-2021"
                        },
                        "title": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Tittel på retningslinjen, eller `null` hvis ikke oppgitt.",
                          "example": "Nasjonal faglig retningslinje for diabetes"
                        },
                        "status": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Publiseringsstatus fra kilden, eller `null`.",
                          "example": "published"
                        },
                        "publishedAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Publiseringsdato (kildens format, typisk ISO-8601), eller `null`.",
                          "example": "2021-09-14"
                        },
                        "sourceUrl": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Lenke til retningslinjen hos Helsedirektoratet, eller `null`.",
                          "example": "https://www.helsedirektoratet.no/retningslinjer/diabetes"
                        }
                      }
                    }
                  },
                  "example": {
                    "guideline": {
                      "id": "diabetes-2021",
                      "title": "Nasjonal faglig retningslinje for diabetes",
                      "status": "published",
                      "publishedAt": "2021-09-14",
                      "sourceUrl": "https://www.helsedirektoratet.no/retningslinjer/diabetes"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/helsedir/health": {
      "get": {
        "tags": [
          "connector:helsedir"
        ],
        "operationId": "get_api_connectors_helsedir_health",
        "summary": "GET /api/connectors/helsedir/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/helsedir/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/hoyesterett/cases": {
      "get": {
        "tags": [
          "connector:hoyesterett"
        ],
        "operationId": "get_api_connectors_hoyesterett_cases",
        "summary": "GET /api/connectors/hoyesterett/cases?...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/hoyesterett/cases/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/hoyesterett/cases/{citation}": {
      "get": {
        "tags": [
          "connector:hoyesterett"
        ],
        "operationId": "get_api_connectors_hoyesterett_cases__citation_",
        "summary": "GET /api/connectors/hoyesterett/cases/{citation} Enkeltoppslag på Hoyesterett-citation, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/hoyesterett/cases/[citation]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorHoyesterettCase",
                  "additionalProperties": false,
                  "description": "Én Høyesterett-avgjørelse i kilde-agnostisk CanonicalCase-form. Hentet via Lovdata-delegasjon (doc-type STRD) når LOVDATA_API_KEY er satt.",
                  "required": [
                    "id",
                    "caseType",
                    "country",
                    "court",
                    "title",
                    "decidedIso",
                    "relatedRegulations",
                    "sistHentetIso",
                    "source"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Stabil ID. For Hoyesterett `hoyesterett:{aar}:{saksnr}`.",
                      "example": "hoyesterett:2025:512"
                    },
                    "caseType": {
                      "type": "string",
                      "enum": [
                        "judgment",
                        "decision",
                        "ruling",
                        "annet"
                      ],
                      "description": "Avgjørelsestype — judgment (dom), decision (kjennelse/vedtak), ruling (beslutning) eller annet.",
                      "example": "judgment"
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "NO",
                        "SE",
                        "DK",
                        "FI",
                        "IS"
                      ],
                      "description": "Landkode. Alltid \"NO\" for Høyesterett.",
                      "example": "NO"
                    },
                    "court": {
                      "type": "string",
                      "description": "Domstol eller forvaltningsorgan. Alltid \"Hoyesterett\" for denne kilden.",
                      "example": "Hoyesterett"
                    },
                    "title": {
                      "type": "string",
                      "description": "Sakens offisielle tittel eller parts-betegnelse.",
                      "example": "A mot Staten v/Skattedirektoratet"
                    },
                    "summary": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sammendrag (én-til-tre setninger). Null når ikke hydrert.",
                      "example": "Spørsmål om fradragsrett for inngående merverdiavgift."
                    },
                    "bodyText": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Full avgjørelsestekst. Null når kun listing er hentet.",
                      "example": null
                    },
                    "bodyUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "URL til avgjørelsen på hoyesterett.no. Kan være null.",
                      "example": "https://www.hoyesterett.no/avgjorelser/2025:512"
                    },
                    "decidedIso": {
                      "type": "string",
                      "description": "Når avgjørelsen ble avsagt. ISO-8601-tidsstempel.",
                      "example": "2025-04-15T00:00:00Z"
                    },
                    "citation": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Saksreferanse fra kilden. Kan være null.",
                      "example": "HR-2025-512-A"
                    },
                    "relatedRegulations": {
                      "type": "array",
                      "description": "Relevante lovparagrafer (krysspeker mot CanonicalRegulation). Tom array hvis ingen.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "merverdiavgiftsloven § 8-1"
                      ]
                    },
                    "sistHentetIso": {
                      "type": "string",
                      "description": "Tidspunkt connectoren hentet payloaden. ISO-8601.",
                      "example": "2026-06-24T10:00:00.000Z"
                    },
                    "source": {
                      "type": "string",
                      "description": "Proveniens (#74 explainability). \"hoyesterett\" for denne kilden.",
                      "example": "hoyesterett"
                    },
                    "apiVersion": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kilde-API-versjon hvis tilgjengelig. Null for Høyesterett.",
                      "example": null
                    }
                  },
                  "example": {
                    "id": "hoyesterett:2025:512",
                    "caseType": "judgment",
                    "country": "NO",
                    "court": "Hoyesterett",
                    "title": "A mot Staten v/Skattedirektoratet",
                    "summary": "Spørsmål om fradragsrett for inngående merverdiavgift.",
                    "bodyText": null,
                    "bodyUrl": "https://www.hoyesterett.no/avgjorelser/2025:512",
                    "decidedIso": "2025-04-15T00:00:00Z",
                    "citation": "HR-2025-512-A",
                    "relatedRegulations": [
                      "merverdiavgiftsloven § 8-1"
                    ],
                    "sistHentetIso": "2026-06-24T10:00:00.000Z",
                    "source": "hoyesterett",
                    "apiVersion": null
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "citation",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `citation` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/hoyesterett/health": {
      "get": {
        "tags": [
          "connector:hoyesterett"
        ],
        "operationId": "get_api_connectors_hoyesterett_health",
        "summary": "GET /api/connectors/hoyesterett/health (#2168/#2784) hoyesterett.no migrerte til JavaScript-SPA — de",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/hoyesterett/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/imf/data": {
      "get": {
        "tags": [
          "connector:imf"
        ],
        "operationId": "get_api_connectors_imf_data",
        "summary": "GET /api/connectors/imf/data?dataset=WEO&key=NO.NGDP_RPCH&startPeriod=2020&endPeriod=2025 Generisk C",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/imf/data/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "key",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.+]+$"
            },
            "description": "SDMX-nøkkel {datasett}.{freq}.{land}.{indikator} — punktum-separert (datasett auto-avledes fra prefikset)",
            "example": "IFS.Q.NO.NGDP_SA_XDC"
          }
        ]
      }
    },
    "/api/connectors/imf/datasets": {
      "get": {
        "tags": [
          "connector:imf"
        ],
        "operationId": "get_api_connectors_imf_datasets",
        "summary": "GET /api/connectors/imf/datasets Liste alle tilgjengelige IMF-datasett (WEO, IFS, DOT, BOP, …).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/imf/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorImfDatasets",
                  "additionalProperties": false,
                  "description": "Liste over tilgjengelige IMF-datasett (dataflows). Id + navn per datasett.",
                  "required": [
                    "source",
                    "count",
                    "datasets"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "imf"
                      ]
                    },
                    "count": {
                      "type": "integer",
                      "example": 42
                    },
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "IFS"
                          },
                          "name": {
                            "type": "string",
                            "example": "International Financial Statistics"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "imf",
                    "count": 1,
                    "datasets": [
                      {
                        "id": "IFS",
                        "name": "International Financial Statistics"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/imf/health": {
      "get": {
        "tags": [
          "connector:imf"
        ],
        "operationId": "get_api_connectors_imf_health",
        "summary": "GET /api/connectors/imf/health Default: statisk metadata via `handleImfHealth()`.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/imf/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kartverket/adresser/punktsok": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_adresser_punktsok",
        "summary": "GET /api/connectors/kartverket/adresser/punktsok Radius-søk rundt et lat/lon-punkt mot Kartverket Ad",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/adresser/punktsok/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.913"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.752"
          },
          {
            "name": "radius",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "Søkeradius i meter",
            "example": "500"
          }
        ]
      }
    },
    "/api/connectors/kartverket/adresser/sok": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_adresser_sok",
        "summary": "GET /api/connectors/kartverket/adresser/sok",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/adresser/sok/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorKartverketAdresser",
                  "additionalProperties": false,
                  "description": "Treffliste fra Kartverkets adressesøk (Matrikkelens adresse-API).",
                  "required": [
                    "adresser",
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "kartverket"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "kartverket"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Paginerings-metadata fra Kartverket.",
                      "properties": {
                        "totaltAntallTreff": {
                          "type": "integer",
                          "minimum": 0,
                          "example": 42
                        },
                        "side": {
                          "type": "integer",
                          "minimum": 0,
                          "example": 0
                        },
                        "treffPerSide": {
                          "type": "integer",
                          "minimum": 0,
                          "example": 10
                        },
                        "asciiKompatibel": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    },
                    "adresser": {
                      "type": "array",
                      "description": "Adressetreff (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én adresse. Alle felt er valgfrie — Kartverket utelater det som mangler.",
                        "properties": {
                          "adresseId": {
                            "type": "string",
                            "pattern": "^\\d{1,12}$",
                            "example": "123456789"
                          },
                          "adressetekst": {
                            "type": "string",
                            "description": "Sammensatt adresse-tekst.",
                            "example": "Storgata 1, 0151 Oslo"
                          },
                          "adressenavn": {
                            "type": "string",
                            "description": "Gate-/veg-navn-delen.",
                            "example": "Storgata"
                          },
                          "nummer": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Husnummer (numerisk del).",
                            "example": 1
                          },
                          "bokstav": {
                            "type": "string",
                            "description": "Bokstav-suffix på husnummer.",
                            "example": "A"
                          },
                          "bruksenhetsnummer": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Bruksenhet/bolignummer (oppgang/leilighet).",
                            "example": [
                              "H0101"
                            ]
                          },
                          "postnummer": {
                            "type": "string",
                            "example": "0151"
                          },
                          "poststed": {
                            "type": "string",
                            "example": "OSLO"
                          },
                          "kommunenummer": {
                            "type": "string",
                            "example": "0301"
                          },
                          "kommunenavn": {
                            "type": "string",
                            "example": "OSLO"
                          },
                          "fylkesnummer": {
                            "type": "string",
                            "description": "Fylkesnummer (2 siffer).",
                            "example": "03"
                          },
                          "fylkesnavn": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "koordinat": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "lat",
                              "lon"
                            ],
                            "description": "WGS84-koordinat. Mangler for adresser uten matrikkelført punkt.",
                            "properties": {
                              "lat": {
                                "type": "number",
                                "example": 59.9139
                              },
                              "lon": {
                                "type": "number",
                                "example": 10.7522
                              }
                            }
                          },
                          "representasjonspunkt": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "UTM33-representasjon hvis Kartverket eksponerer den.",
                            "properties": {
                              "epsg": {
                                "type": "string",
                                "example": "EPSG:25833"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lon": {
                                "type": "number"
                              }
                            }
                          },
                          "objtype": {
                            "type": "string",
                            "description": "Adressetype — `Vegadresse` (vanligst) eller `Matrikkeladresse`.",
                            "example": "Vegadresse"
                          },
                          "oppdateringsdato": {
                            "type": "string",
                            "description": "Datostempel siste endring i Matrikkelen (ISO-8601).",
                            "example": "2025-01-15"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "kartverket",
                    "metadata": {
                      "totaltAntallTreff": 1,
                      "side": 0,
                      "treffPerSide": 10,
                      "asciiKompatibel": true
                    },
                    "adresser": [
                      {
                        "adresseId": "123456789",
                        "adressetekst": "Storgata 1, 0151 Oslo",
                        "adressenavn": "Storgata",
                        "nummer": 1,
                        "postnummer": "0151",
                        "poststed": "OSLO",
                        "kommunenummer": "0301",
                        "kommunenavn": "OSLO",
                        "koordinat": {
                          "lat": 59.9139,
                          "lon": 10.7522
                        },
                        "objtype": "Vegadresse"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "adressenavn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Gateadresse/adressenavn",
            "example": "Karl Johans gate"
          },
          {
            "name": "kommunenummer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Kommunenummer",
            "example": "0301"
          },
          {
            "name": "postnummer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Postnummer",
            "example": "0154"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Alias for sok (fritekst-adressesøk)",
            "example": "Karl Johans gate Oslo"
          },
          {
            "name": "sok",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-adressesøk (kanonisk Kartverket-param). Minst ett av sok/q/adressenavn/postnummer/kommunenummer kreves",
            "example": "Karl Johans gate Oslo"
          }
        ]
      }
    },
    "/api/connectors/kartverket/grunnbok/rights": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_grunnbok_rights",
        "summary": "GET /api/connectors/kartverket/grunnbok/rights",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/grunnbok/rights/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kartverket/health": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_health",
        "summary": "GET /api/connectors/kartverket/health Default: statisk metadata for Kartverket-connectoren (adresser",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kartverket/matrikkel/unit": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_matrikkel_unit",
        "summary": "GET /api/connectors/kartverket/matrikkel/unit",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/matrikkel/unit/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kartverket/properties": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_properties",
        "summary": "GET /api/connectors/kartverket/properties Eiendomsoppslag via Kartverket Matrikkel.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/properties/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kartverket/stedsnavn": {
      "get": {
        "tags": [
          "connector:kartverket"
        ],
        "operationId": "get_api_connectors_kartverket_stedsnavn",
        "summary": "GET /api/connectors/kartverket/stedsnavn?q=&limit=&kommunenr= Delegerer til handleStedsnavnSearch fr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kartverket/stedsnavn/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng for stedsnavn",
            "example": "Galdhøpiggen"
          }
        ]
      }
    },
    "/api/connectors/ketl-research/health": {
      "get": {
        "tags": [
          "connector:ketl-research"
        ],
        "operationId": "get_api_connectors_ketl_research_health",
        "summary": "GET /api/connectors/ketl-research/health — kilde-helse-endepunkt.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ketl-research/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ketl-research/{orgnr}": {
      "get": {
        "tags": [
          "connector:ketl-research"
        ],
        "operationId": "get_api_connectors_ketl_research__orgnr_",
        "summary": "GET /api/connectors/ketl-research/{orgnr} — datakatalog-fetcher for KETL Research-record.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ketl-research/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/klipos/climate-risk": {
      "get": {
        "tags": [
          "connector:klipos"
        ],
        "operationId": "get_api_connectors_klipos_climate_risk",
        "summary": "GET /api/connectors/klipos/climate-risk?sector=&period= (#2397) Klimarisikovurdering per sektor (tra",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/klipos/climate-risk/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Tidsperiode (år eller intervall)",
            "example": "2024"
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Sektorkode (NACE/GICS)",
            "example": "K"
          }
        ]
      }
    },
    "/api/connectors/klipos/health": {
      "get": {
        "tags": [
          "connector:klipos"
        ],
        "operationId": "get_api_connectors_klipos_health",
        "summary": "GET /api/connectors/klipos/health (#2397) Status for KLIPOS-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/klipos/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/klipos/taxonomy-alignment": {
      "get": {
        "tags": [
          "connector:klipos"
        ],
        "operationId": "get_api_connectors_klipos_taxonomy_alignment",
        "summary": "GET /api/connectors/klipos/taxonomy-alignment?orgnr=|lei=&year= (#2397) EU-taksonomi-justering per s",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/klipos/taxonomy-alignment/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lei",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Z0-9]{20}$"
            },
            "description": "LEI-kode (20 tegn)",
            "example": "5967007LIEEXZX4RVS85"
          },
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (enten orgnr eller lei)",
            "example": "923609016"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Rapporteringsår",
            "example": "2024"
          }
        ]
      }
    },
    "/api/connectors/kommunedatabasen/health": {
      "get": {
        "tags": [
          "connector:kommunedatabasen"
        ],
        "operationId": "get_api_connectors_kommunedatabasen_health",
        "summary": "GET /api/connectors/kommunedatabasen/health Smoke-endepunkt for Sikt Kommunedatabasen-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kommunedatabasen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kommunedatabasen/observations": {
      "get": {
        "tags": [
          "connector:kommunedatabasen"
        ],
        "operationId": "get_api_connectors_kommunedatabasen_observations",
        "summary": "GET /api/connectors/kommunedatabasen/observations?tableId=...&yearFrom=...&yearTo=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kommunedatabasen/observations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/kommunedatabasen/variables": {
      "get": {
        "tags": [
          "connector:kommunedatabasen"
        ],
        "operationId": "get_api_connectors_kommunedatabasen_variables",
        "summary": "GET /api/connectors/kommunedatabasen/variables?theme=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kommunedatabasen/variables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/kulturradet/grants": {
      "get": {
        "tags": [
          "connector:kulturradet"
        ],
        "operationId": "get_api_connectors_kulturradet_grants",
        "summary": "GET /api/connectors/kulturradet/grants?year=2023&municipality=0301 Henter tilskuddsdata fra Kulturrå",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kulturradet/grants/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kulturradet/health": {
      "get": {
        "tags": [
          "connector:kulturradet"
        ],
        "operationId": "get_api_connectors_kulturradet_health",
        "summary": "GET /api/connectors/kulturradet/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kulturradet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kystverket/health": {
      "get": {
        "tags": [
          "connector:kystverket"
        ],
        "operationId": "get_api_connectors_kystverket_health",
        "summary": "GET /api/connectors/kystverket/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kystverket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kystverket/lighthouses": {
      "get": {
        "tags": [
          "connector:kystverket"
        ],
        "operationId": "get_api_connectors_kystverket_lighthouses",
        "summary": "GET /api/connectors/kystverket/lighthouses?region=&limit= kystinfo.no/openapi/lighthousesbuoys/light",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kystverket/lighthouses/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kystverket/nav-warnings": {
      "get": {
        "tags": [
          "connector:kystverket"
        ],
        "operationId": "get_api_connectors_kystverket_nav_warnings",
        "summary": "GET /api/connectors/kystverket/nav-warnings?status=VALID&area=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kystverket/nav-warnings/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/kystverket/ports": {
      "get": {
        "tags": [
          "connector:kystverket"
        ],
        "operationId": "get_api_connectors_kystverket_ports",
        "summary": "GET /api/connectors/kystverket/ports?query=&county=&limit= Henter norske havner fra Kystverkets kyst",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/kystverket/ports/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lakselus/health": {
      "get": {
        "tags": [
          "connector:lakselus"
        ],
        "operationId": "get_api_connectors_lakselus_health",
        "summary": "GET /api/connectors/lakselus/health Smoke-route for Lakselus-connector (#1627).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lakselus/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lakselus/locality": {
      "get": {
        "tags": [
          "connector:lakselus"
        ],
        "operationId": "get_api_connectors_lakselus_locality",
        "summary": "GET /api/connectors/lakselus/locality?localityNo=12345&year=2026&week=20 Lakselus-data per oppdretts",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lakselus/locality/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "localityNo",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Lokalitetsnummer (oppdrettslokalitet)",
            "example": "12345"
          },
          {
            "name": "week",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "Uke (1–53)",
            "example": "20"
          },
          {
            "name": "year",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "År",
            "example": "2024"
          }
        ]
      }
    },
    "/api/connectors/lanekassen/grants": {
      "get": {
        "tags": [
          "connector:lanekassen"
        ],
        "operationId": "get_api_connectors_lanekassen_grants",
        "summary": "GET /api/connectors/lanekassen/grants Tildelt stipend fordelt på år og utdanningstype (Lånekassen, h",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lanekassen/grants/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lanekassen/health": {
      "get": {
        "tags": [
          "connector:lanekassen"
        ],
        "operationId": "get_api_connectors_lanekassen_health",
        "summary": "GET /api/connectors/lanekassen/health Status for Lånekassen-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lanekassen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lanekassen/loans": {
      "get": {
        "tags": [
          "connector:lanekassen"
        ],
        "operationId": "get_api_connectors_lanekassen_loans",
        "summary": "GET /api/connectors/lanekassen/loans Tildelt lån fordelt på år og utdanningstype (Lånekassen, høstet",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lanekassen/loans/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lanekassen/repayment": {
      "get": {
        "tags": [
          "connector:lanekassen"
        ],
        "operationId": "get_api_connectors_lanekassen_repayment",
        "summary": "GET /api/connectors/lanekassen/repayment Tilbakebetalingsstatistikk (Lånekassen, høstet CSV).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lanekassen/repayment/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lantmateriet-stac/collections": {
      "get": {
        "tags": [
          "connector:lantmateriet-stac"
        ],
        "operationId": "get_api_connectors_lantmateriet_stac_collections",
        "summary": "GET /api/connectors/lantmateriet-stac/collections Lister STAC-samlinger fra Lantmäteriet Geotorget.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet-stac/collections/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lantmateriet-stac/health": {
      "get": {
        "tags": [
          "connector:lantmateriet-stac"
        ],
        "operationId": "get_api_connectors_lantmateriet_stac_health",
        "summary": "GET /api/connectors/lantmateriet-stac/health Helsesjekk for Lantmäteriet STAC-connector.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet-stac/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lantmateriet-stac/items/{collection}/{id}": {
      "get": {
        "tags": [
          "connector:lantmateriet-stac"
        ],
        "operationId": "get_api_connectors_lantmateriet_stac_items__collection___id_",
        "summary": "GET /api/connectors/lantmateriet-stac/items/{collection}/{id} Henter én STAC-item (GeoJSON Feature) ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet-stac/items/[collection]/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLantmaterietStacItem",
                  "additionalProperties": false,
                  "description": "Ett STAC-item (GeoJSON Feature) fra Lantmäteriets STAC-API, slått opp på collection + id. `data` er den rå STAC-featuren; øvrige felt er KETL-envelope.",
                  "required": [
                    "source",
                    "kind",
                    "query",
                    "resultCount",
                    "data"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "lantmateriet-stac"
                      ]
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "item"
                      ],
                      "description": "Oppslagstype — alltid «item» for denne ruten."
                    },
                    "query": {
                      "type": "string",
                      "description": "«{collection}/{id}» som ble slått opp.",
                      "example": "hojd-grid/12345"
                    },
                    "resultCount": {
                      "type": "integer",
                      "example": 1
                    },
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå STAC Feature (GeoJSON) fra Lantmäteriet, videresendt verbatim. Følger STAC-spec (type/geometry/properties/assets/links) og normaliseres ikke."
                    }
                  },
                  "example": {
                    "source": "lantmateriet-stac",
                    "kind": "item",
                    "query": "hojd-grid/12345",
                    "resultCount": 1,
                    "data": {
                      "type": "Feature",
                      "id": "12345",
                      "collection": "hojd-grid",
                      "properties": {
                        "datetime": "2025-06-01T00:00:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "collection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `collection` — se connector-dokumentasjon for format."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/lantmateriet-stac/search": {
      "get": {
        "tags": [
          "connector:lantmateriet-stac"
        ],
        "operationId": "get_api_connectors_lantmateriet_stac_search",
        "summary": "GET /api/connectors/lantmateriet-stac/search?bbox=&datetime=&collections=&limit= STAC item-søk (GeoJ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet-stac/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLantmaterietStacSearch",
                  "additionalProperties": false,
                  "description": "STAC-søkeresultat fra Lantmäteriet: `data` er den rå STAC-nyttelasten (FeatureCollection/collections/items), øvrige felt er KETL-envelope.",
                  "required": [
                    "source",
                    "kind",
                    "query",
                    "resultCount",
                    "data"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "lantmateriet-stac"
                      ]
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "search"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "bbox / collections / «*».",
                      "example": "hojd-grid"
                    },
                    "resultCount": {
                      "type": "integer",
                      "example": 10
                    },
                    "data": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": true,
                      "description": "Rå STAC-nyttelast (FeatureCollection eller lignende), videresendt verbatim. Null når upstream ikke returnerte noe. Ikke normalisert av KETL."
                    }
                  },
                  "example": {
                    "source": "lantmateriet-stac",
                    "kind": "search",
                    "query": "hojd-grid",
                    "resultCount": 1,
                    "data": {
                      "type": "FeatureCollection",
                      "features": []
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lantmateriet/address-lookup": {
      "get": {
        "tags": [
          "connector:lantmateriet"
        ],
        "operationId": "get_api_connectors_lantmateriet_address_lookup",
        "summary": "GET /api/connectors/lantmateriet/address-lookup?beteckning= Adresseoppslag på registerbeteckning (Be",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet/address-lookup/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "beteckning",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fastighetsbeteckning",
            "example": "STOCKHOLM VASASTADEN 1:1"
          }
        ]
      }
    },
    "/api/connectors/lantmateriet/health": {
      "get": {
        "tags": [
          "connector:lantmateriet"
        ],
        "operationId": "get_api_connectors_lantmateriet_health",
        "summary": "GET /api/connectors/lantmateriet/health Statisk status for Lantmäteriet-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lantmateriet/place-search": {
      "get": {
        "tags": [
          "connector:lantmateriet"
        ],
        "operationId": "get_api_connectors_lantmateriet_place_search",
        "summary": "GET /api/connectors/lantmateriet/place-search?name=&maxHits= Stedsnavnsøk (Ortnamn Direkt).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet/place-search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Stedsnavn",
            "example": "Kungsgatan"
          }
        ]
      }
    },
    "/api/connectors/lantmateriet/property": {
      "get": {
        "tags": [
          "connector:lantmateriet"
        ],
        "operationId": "get_api_connectors_lantmateriet_property",
        "summary": "GET /api/connectors/lantmateriet/property?beteckning= Eiendomsoppslag (Fastighet Direkt).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lantmateriet/property/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "beteckning",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fastighetsbeteckning",
            "example": "STOCKHOLM VASASTADEN 1:1"
          }
        ]
      }
    },
    "/api/connectors/latvia-datagov/dataset/{id}": {
      "get": {
        "tags": [
          "connector:latvia-datagov"
        ],
        "operationId": "get_api_connectors_latvia_datagov_dataset__id_",
        "summary": "GET /api/connectors/latvia-datagov/dataset/[id] (#3535).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/latvia-datagov/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLatviaDatagovDataset",
                  "additionalProperties": false,
                  "description": "Normalisert datasett-detalj fra Latvias nasjonale åpne-data-portal (data.gov.lv, CKAN v3 package_show).",
                  "required": [
                    "id",
                    "name",
                    "title",
                    "description",
                    "organization",
                    "license",
                    "modified",
                    "created",
                    "tags",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-datasett-UUID (raw.id).",
                      "example": "5d8a2f3e-1c44-4a0b-9b21-3e6f0c8d1234"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-slug/navn (raw.name).",
                      "example": "uznemumu-registra-dati"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Menneskelesbar tittel (raw.title).",
                      "example": "Uzņēmumu reģistra dati"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Beskrivelse (raw.notes).",
                      "example": "Open data from the Register of Enterprises of Latvia."
                    },
                    "organization": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Eier-organisasjon — title med fallback til name (raw.organization).",
                      "example": "Uzņēmumu reģistrs"
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lisens — license_title med fallback til license_id.",
                      "example": "Creative Commons Attribution"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret-tidsstempel fra CKAN (metadata_modified, ISO-8601).",
                      "example": "2026-05-12T09:30:00.123456"
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opprettet-tidsstempel fra CKAN (metadata_created, ISO-8601).",
                      "example": "2021-03-01T08:00:00.000000"
                    },
                    "tags": {
                      "type": "array",
                      "description": "Tag-navn (tom liste hvis ingen). Tomme/manglende navn filtreres bort.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "companies",
                        "register",
                        "open-data"
                      ]
                    },
                    "resources": {
                      "type": "array",
                      "description": "Distribusjoner/ressurser i datasettet (tom liste hvis ingen).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "format",
                          "url",
                          "datastoreActive"
                        ],
                        "description": "Én CKAN-ressurs (distribusjon).",
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressurs-id (raw.resources[].id).",
                            "example": "a1b2c3d4-0001-4abc-8def-000000000001"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressursnavn.",
                            "example": "Companies CSV"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Filformat slik CKAN oppgir det.",
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Nedlastings-URL for ressursen.",
                            "example": "https://data.gov.lv/dati/dataset/.../download/companies.csv"
                          },
                          "datastoreActive": {
                            "type": "boolean",
                            "description": "True hvis ressursen er lastet inn i CKAN DataStore (raw.datastore_active === true) og dermed kan pagineres via datastore-endepunktet.",
                            "example": true
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "5d8a2f3e-1c44-4a0b-9b21-3e6f0c8d1234",
                    "name": "uznemumu-registra-dati",
                    "title": "Uzņēmumu reģistra dati",
                    "description": "Open data from the Register of Enterprises of Latvia.",
                    "organization": "Uzņēmumu reģistrs",
                    "license": "Creative Commons Attribution",
                    "modified": "2026-05-12T09:30:00.123456",
                    "created": "2021-03-01T08:00:00.000000",
                    "tags": [
                      "companies",
                      "register",
                      "open-data"
                    ],
                    "resources": [
                      {
                        "id": "a1b2c3d4-0001-4abc-8def-000000000001",
                        "name": "Companies CSV",
                        "format": "CSV",
                        "url": "https://data.gov.lv/dati/dataset/.../download/companies.csv",
                        "datastoreActive": true
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/latvia-datagov/datastore/{resourceId}": {
      "get": {
        "tags": [
          "connector:latvia-datagov"
        ],
        "operationId": "get_api_connectors_latvia_datagov_datastore__resourceId_",
        "summary": "GET /api/connectors/latvia-datagov/datastore/[resourceId]?offset=&limit= (#3535).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/latvia-datagov/datastore/[resourceId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLatviaDatagovDatastore",
                  "additionalProperties": false,
                  "description": "Én paginert side med rader fra en CKAN datastore-ressurs på data.gov.lv. Kolonne-skjema i `fields`; rå rader i `records`; offset-basert paginering.",
                  "required": [
                    "resourceId",
                    "fields",
                    "records",
                    "total",
                    "offset",
                    "limit",
                    "nextOffset"
                  ],
                  "properties": {
                    "resourceId": {
                      "type": "string",
                      "description": "CKAN datastore-ressurs-id.",
                      "example": "a1b2c3d4-0000-1111-2222-333344445555"
                    },
                    "fields": {
                      "type": "array",
                      "description": "Kolonne-definisjoner for datasettet.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "type"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "municipality"
                          },
                          "type": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "text"
                          }
                        }
                      }
                    },
                    "records": {
                      "type": "array",
                      "description": "Rå CKAN-rader — vilkårlige nøkler bestemt av datasettet.",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Totalt antall rader i ressursen.",
                      "example": 1200
                    },
                    "offset": {
                      "type": "integer",
                      "example": 0
                    },
                    "limit": {
                      "type": "integer",
                      "example": 100
                    },
                    "nextOffset": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Offset for neste side, eller null når siste side er nådd.",
                      "example": 100
                    }
                  },
                  "example": {
                    "resourceId": "a1b2c3d4-0000-1111-2222-333344445555",
                    "fields": [
                      {
                        "id": "municipality",
                        "type": "text"
                      },
                      {
                        "id": "population",
                        "type": "numeric"
                      }
                    ],
                    "records": [
                      {
                        "municipality": "Rīga",
                        "population": 605802
                      }
                    ],
                    "total": 1200,
                    "offset": 0,
                    "limit": 100,
                    "nextOffset": 100
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `resourceId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/latvia-datagov/health": {
      "get": {
        "tags": [
          "connector:latvia-datagov"
        ],
        "operationId": "get_api_connectors_latvia_datagov_health",
        "summary": "GET /api/connectors/latvia-datagov/health (#3535).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/latvia-datagov/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/latvia-datagov/search": {
      "get": {
        "tags": [
          "connector:latvia-datagov"
        ],
        "operationId": "get_api_connectors_latvia_datagov_search",
        "summary": "GET /api/connectors/latvia-datagov/search?q=&rows=&start= (#3535).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/latvia-datagov/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLatviaDatagovSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søk på data.gov.lv (CKAN). Ressurser inkluderer datastore-aktiv-flagg for spørrbare tabeller.",
                  "required": [
                    "datasets",
                    "count",
                    "rows",
                    "start"
                  ],
                  "properties": {
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "license",
                          "modified",
                          "created",
                          "tags",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "abc-123"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "iedzivotaji"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Iedzīvotāji pēc pašvaldības"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Centrālā statistikas pārvalde"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CC-BY-4.0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-10"
                          },
                          "created": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-02-01"
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "iedzivotaji"
                            ]
                          },
                          "resources": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "id",
                                "name",
                                "format",
                                "url",
                                "datastoreActive"
                              ],
                              "properties": {
                                "id": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "res-1"
                                },
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://data.gov.lv/dati.csv"
                                },
                                "datastoreActive": {
                                  "type": "boolean",
                                  "example": true
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "example": 120
                    },
                    "rows": {
                      "type": "integer",
                      "example": 20
                    },
                    "start": {
                      "type": "integer",
                      "example": 0
                    }
                  },
                  "example": {
                    "datasets": [
                      {
                        "id": "abc-123",
                        "name": "iedzivotaji",
                        "title": "Iedzīvotāji pēc pašvaldības",
                        "description": "Folketall per kommune.",
                        "organization": "Centrālā statistikas pārvalde",
                        "license": "CC-BY-4.0",
                        "modified": "2025-01-10",
                        "created": "2024-02-01",
                        "tags": [
                          "iedzivotaji"
                        ],
                        "resources": [
                          {
                            "id": "res-1",
                            "name": "CSV",
                            "format": "CSV",
                            "url": "https://data.gov.lv/dati.csv",
                            "datastoreActive": true
                          }
                        ]
                      }
                    ],
                    "count": 120,
                    "rows": 20,
                    "start": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng",
            "example": "budget"
          }
        ]
      }
    },
    "/api/connectors/legemiddelverket/atc": {
      "get": {
        "tags": [
          "connector:legemiddelverket"
        ],
        "operationId": "get_api_connectors_legemiddelverket_atc",
        "summary": "GET /api/connectors/legemiddelverket/atc?code=N02BE01&limit=20 (#2808) ATC-kode-oppslag mot DMP FHIR",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/legemiddelverket/atc/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "WHO ATC-kode",
            "example": "N02BE01"
          }
        ]
      }
    },
    "/api/connectors/legemiddelverket/drugs": {
      "get": {
        "tags": [
          "connector:legemiddelverket"
        ],
        "operationId": "get_api_connectors_legemiddelverket_drugs",
        "summary": "GET /api/connectors/legemiddelverket/drugs?q=paracetamol&atc=N02BE01 Henter legemiddelinformasjon fr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/legemiddelverket/drugs/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "atc",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ATC-kode",
            "example": "N02BE01"
          },
          {
            "name": "form",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Legemiddelform",
            "example": "tablett"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Søketekst (minst én av q/atc/form)",
            "example": "paracetamol"
          }
        ]
      }
    },
    "/api/connectors/legemiddelverket/health": {
      "get": {
        "tags": [
          "connector:legemiddelverket"
        ],
        "operationId": "get_api_connectors_legemiddelverket_health",
        "summary": "GET /api/connectors/legemiddelverket/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/legemiddelverket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/legemiddelverket/search": {
      "get": {
        "tags": [
          "connector:legemiddelverket"
        ],
        "operationId": "get_api_connectors_legemiddelverket_search",
        "summary": "GET /api/connectors/legemiddelverket/search?q=paracetamol&limit=10 (#2808) Agent-vennlig wrapper run",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/legemiddelverket/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorLegemiddelverketSearch",
                  "description": "Treffliste av normaliserte legemidler fra Statens legemiddelverk (DMP) sitt FHIR R4-søk. Bar array (tom ved ingen treff).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Ett normalisert legemiddel (`NormalizedDrug`). Alle nøkler er alltid til stede; de fleste verdier kan være null avhengig av kilde.",
                    "required": [
                      "id",
                      "itemNumber",
                      "brandName",
                      "atcCode",
                      "atcName",
                      "pharmaceuticalForm",
                      "strength",
                      "packSize",
                      "manufacturer",
                      "reimbursementCode",
                      "reimbursementStatus",
                      "pharmacyRetailPrice",
                      "wholesalePrice",
                      "onMarket",
                      "prescriptionGroup",
                      "marketingDate",
                      "withdrawalDate"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Kanonisk id. FHIR: MedicinalProduct.id (eller identifier[0].value); legacy: råobjektets id eller varenummer. Kan være tom streng.",
                        "example": "ID_0123456789"
                      },
                      "itemNumber": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Varenummer (FHIR identifier[0].value), eller null.",
                        "example": "123456"
                      },
                      "brandName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Handelsnavn / produktnavn, eller null.",
                        "example": "Paracet"
                      },
                      "atcCode": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "ATC-kode, eller null.",
                        "example": "N02BE01"
                      },
                      "atcName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "ATC-navn (display fra ATC-coding), eller null.",
                        "example": "Paracetamol"
                      },
                      "pharmaceuticalForm": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Legemiddelform (kombinert dose-form), eller null.",
                        "example": "Tablett"
                      },
                      "strength": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Styrke. Alltid null fra FHIR-kilden; satt for legacy råobjekter.",
                        "example": "500 mg"
                      },
                      "packSize": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Pakningsstørrelse. Alltid null fra FHIR-kilden.",
                        "example": "20 stk"
                      },
                      "manufacturer": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Produsent / kontaktnavn, eller null.",
                        "example": "Karo Pharma AS"
                      },
                      "reimbursementCode": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Refusjonskode. Alltid null fra FHIR-kilden.",
                        "example": null
                      },
                      "reimbursementStatus": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Refusjonsstatus. Alltid null fra FHIR-kilden.",
                        "example": null
                      },
                      "pharmacyRetailPrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Apotekets utsalgspris (AUP). Alltid null fra FHIR-kilden.",
                        "example": null
                      },
                      "wholesalePrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Apotekets innkjøpspris (AIP). Alltid null fra FHIR-kilden.",
                        "example": null
                      },
                      "onMarket": {
                        "type": "boolean",
                        "description": "Markedsføringsstatus. True for FHIR-treff; for legacy råobjekter speiler det `markedsforing` (default false).",
                        "example": true
                      },
                      "prescriptionGroup": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Reseptgruppe. Alltid null fra FHIR-kilden.",
                        "example": null
                      },
                      "marketingDate": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Markedsføringsdato (ISO-8601). Alltid null fra FHIR-kilden.",
                        "example": null
                      },
                      "withdrawalDate": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Tilbaketrekkingsdato (ISO-8601). Alltid null fra FHIR-kilden.",
                        "example": null
                      }
                    }
                  },
                  "example": [
                    {
                      "id": "ID_0123456789",
                      "itemNumber": "123456",
                      "brandName": "Paracet",
                      "atcCode": "N02BE01",
                      "atcName": "Paracetamol",
                      "pharmaceuticalForm": "Tablett",
                      "strength": null,
                      "packSize": null,
                      "manufacturer": "Karo Pharma AS",
                      "reimbursementCode": null,
                      "reimbursementStatus": null,
                      "pharmacyRetailPrice": null,
                      "wholesalePrice": null,
                      "onMarket": true,
                      "prescriptionGroup": null,
                      "marketingDate": null,
                      "withdrawalDate": null
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søketekst (handelsnavn eller virkestoff)",
            "example": "paracetamol"
          }
        ]
      }
    },
    "/api/connectors/legemiddelverket/{id}": {
      "get": {
        "tags": [
          "connector:legemiddelverket"
        ],
        "operationId": "get_api_connectors_legemiddelverket__id_",
        "summary": "GET /api/connectors/legemiddelverket/:id (#2808, #3249) Direkte ID-oppslag mot DMP FHIR `MedicinalPr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/legemiddelverket/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLegemiddelverketDrug",
                  "additionalProperties": false,
                  "description": "Ett normalisert legemiddel fra Direktoratet for medisinske produkter (DMP), slått opp på FHIR MedicinalProduct-id. Inkluderer ATC, legemiddelform, styrke, refusjon og pris (norske kroner).",
                  "required": [
                    "id",
                    "onMarket"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "DMP FHIR MedicinalProduct-id (kanonisk).",
                      "example": "ID_0F1A2B3C-4D5E-6789-ABCD-0123456789AB"
                    },
                    "itemNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Varenummer.",
                      "example": "471293"
                    },
                    "brandName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Paracet"
                    },
                    "atcCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ATC-kode.",
                      "example": "N02BE01"
                    },
                    "atcName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "paracetamol"
                    },
                    "pharmaceuticalForm": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Tablett"
                    },
                    "strength": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "500 mg"
                    },
                    "packSize": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "20 stk"
                    },
                    "manufacturer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Karo Pharma"
                    },
                    "reimbursementCode": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "reimbursementStatus": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "pharmacyRetailPrice": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Apotekets utsalgspris (AUP) i NOK.",
                      "example": 39.9
                    },
                    "wholesalePrice": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Grossistpris (GIP) i NOK.",
                      "example": 24.5
                    },
                    "onMarket": {
                      "type": "boolean",
                      "description": "Om legemiddelet er markedsført.",
                      "example": true
                    },
                    "prescriptionGroup": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Reseptgruppe (f.eks. «C», «F»).",
                      "example": "F"
                    },
                    "marketingDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-dato for markedsføringsstart.",
                      "example": "2005-06-01"
                    },
                    "withdrawalDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-dato for avregistrering. Null hvis fortsatt på markedet."
                    }
                  },
                  "example": {
                    "id": "ID_0F1A2B3C-4D5E-6789-ABCD-0123456789AB",
                    "itemNumber": "471293",
                    "brandName": "Paracet",
                    "atcCode": "N02BE01",
                    "atcName": "paracetamol",
                    "pharmaceuticalForm": "Tablett",
                    "strength": "500 mg",
                    "packSize": "20 stk",
                    "manufacturer": "Karo Pharma",
                    "reimbursementCode": null,
                    "reimbursementStatus": null,
                    "pharmacyRetailPrice": 39.9,
                    "wholesalePrice": 24.5,
                    "onMarket": true,
                    "prescriptionGroup": "F",
                    "marketingDate": "2005-06-01",
                    "withdrawalDate": null
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/losoreregisteret/health": {
      "get": {
        "tags": [
          "connector:losoreregisteret"
        ],
        "operationId": "get_api_connectors_losoreregisteret_health",
        "summary": "GET /api/connectors/losoreregisteret/health (#3070 / #3077) Helsesjekk for Løsøreregisteret-connecto",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/losoreregisteret/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/losoreregisteret/{orgnr}": {
      "get": {
        "tags": [
          "connector:losoreregisteret"
        ],
        "operationId": "get_api_connectors_losoreregisteret__orgnr_",
        "summary": "GET /api/connectors/losoreregisteret/[orgnr] — pant og heftelser (#3070).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/losoreregisteret/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLosoreregisteret",
                  "additionalProperties": false,
                  "description": "Rettsstiftelser (pant, salgspant, leasing o.l.) registrert i Brønnøysundregistrene Løsøreregisteret for ett organisasjonsnummer.",
                  "required": [
                    "orgnr",
                    "rettsstiftelser",
                    "totalAntall",
                    "source"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummeret oppslaget gjelder (9 siffer).",
                      "example": "923609016"
                    },
                    "totalAntall": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall rettsstiftelser. Faller tilbake til lengden av `rettsstiftelser` når upstream ikke oppgir `totalAntall`.",
                      "example": 2
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "losoreregisteret"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "losoreregisteret"
                    },
                    "rettsstiftelser": {
                      "type": "array",
                      "description": "Rettsstiftelser (tom liste når ingen registrert).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én rettsstiftelse (pant, salgspant, leasing o.l.).",
                        "required": [
                          "dokumentnummer",
                          "type",
                          "tinglysningsDato",
                          "slettingsDato",
                          "erAktiv",
                          "belopKredittNok",
                          "rettighetshavere",
                          "debitorOrgnr",
                          "debitorNavn",
                          "panteobjektBeskrivelse"
                        ],
                        "properties": {
                          "dokumentnummer": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dokumentnummer for tinglysningen.",
                            "example": "2021-1234567"
                          },
                          "type": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Type rettsstiftelse (f.eks. salgspant, factoringpant, leasing).",
                            "example": "Salgspant"
                          },
                          "tinglysningsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dato for tinglysing (ISO-8601).",
                            "example": "2021-03-15"
                          },
                          "slettingsDato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dato rettsstiftelsen ble slettet (null når fortsatt aktiv).",
                            "example": null
                          },
                          "erAktiv": {
                            "type": "boolean",
                            "description": "Avledet — true når `slettingsDato` mangler.",
                            "example": true
                          },
                          "belopKredittNok": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Kredittbeløp i NOK (null når ikke oppgitt).",
                            "example": 500000
                          },
                          "debitorOrgnr": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Debitors organisasjonsnummer.",
                            "example": "923609016"
                          },
                          "debitorNavn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Debitors navn.",
                            "example": "EKSEMPEL AS"
                          },
                          "panteobjektBeskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Sammenslått beskrivelse av panteobjekter (semikolon-separert), eller null når ingen.",
                            "example": "Driftstilbehør; Varelager"
                          },
                          "rettighetshavere": {
                            "type": "array",
                            "description": "Rettighetshavere (panthavere). Tom liste når ingen.",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "description": "Én rettighetshaver.",
                              "required": [
                                "orgnr",
                                "navn"
                              ],
                              "properties": {
                                "orgnr": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Rettighetshavers organisasjonsnummer.",
                                  "example": "987654321"
                                },
                                "navn": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Rettighetshavers navn.",
                                  "example": "BANKEN ASA"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "totalAntall": 1,
                    "source": "losoreregisteret",
                    "rettsstiftelser": [
                      {
                        "dokumentnummer": "2021-1234567",
                        "type": "Salgspant",
                        "tinglysningsDato": "2021-03-15",
                        "slettingsDato": null,
                        "erAktiv": true,
                        "belopKredittNok": 500000,
                        "debitorOrgnr": "923609016",
                        "debitorNavn": "EKSEMPEL AS",
                        "panteobjektBeskrivelse": "Driftstilbehør; Varelager",
                        "rettighetshavere": [
                          {
                            "orgnr": "987654321",
                            "navn": "BANKEN ASA"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/lovdata/health": {
      "get": {
        "tags": [
          "connector:lovdata"
        ],
        "operationId": "get_api_connectors_lovdata_health",
        "summary": "GET /api/connectors/lovdata/health Status for Lovdata-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovdata/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lovdata/laws": {
      "get": {
        "tags": [
          "connector:lovdata"
        ],
        "operationId": "get_api_connectors_lovdata_laws",
        "summary": "GET /api/connectors/lovdata/laws Fulltekstsøk i gjeldende lover og sentrale forskrifter via Lovdata ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovdata/laws/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lovdata/laws/{base}/{ruleFile}": {
      "get": {
        "tags": [
          "connector:lovdata"
        ],
        "operationId": "get_api_connectors_lovdata_laws__base___ruleFile_",
        "summary": "GET /api/connectors/lovdata/laws/[base]/[ruleFile] Henter ett strukturert dokument (lov/forskrift) v",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovdata/laws/[base]/[ruleFile]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "base",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `base` — se connector-dokumentasjon for format."
          },
          {
            "name": "ruleFile",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `ruleFile` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/lovdata/packages": {
      "get": {
        "tags": [
          "connector:lovdata"
        ],
        "operationId": "get_api_connectors_lovdata_packages",
        "summary": "GET /api/connectors/lovdata/packages Åpen katalog (ingen nøkkel) over Lovdata bulk-datapakker — gjel",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovdata/packages/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lovdata/sources": {
      "get": {
        "tags": [
          "connector:lovdata"
        ],
        "operationId": "get_api_connectors_lovdata_sources",
        "summary": "GET /api/connectors/lovdata/sources Liste over alle Lovdata legal sources (baser) med beskrivelse vi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovdata/sources/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lovtidend/health": {
      "get": {
        "tags": [
          "connector:lovtidend"
        ],
        "operationId": "get_api_connectors_lovtidend_health",
        "summary": "GET /api/connectors/lovtidend/health Lovtidend-connectoren er sunsettet (#2601): lovdata.no/robots.t",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovtidend/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lovtidend/regulations": {
      "get": {
        "tags": [
          "connector:lovtidend"
        ],
        "operationId": "get_api_connectors_lovtidend_regulations",
        "summary": "GET /api/connectors/lovtidend/regulations Sunsettet (#2601): lovdata.no/robots.txt blokkerer HTML-sc",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovtidend/regulations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/lovtidend/regulations/{citation}": {
      "get": {
        "tags": [
          "connector:lovtidend"
        ],
        "operationId": "get_api_connectors_lovtidend_regulations__citation_",
        "summary": "GET /api/connectors/lovtidend/regulations/{citation} Sunsettet (#2601): lovdata.no/robots.txt blokke",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lovtidend/regulations/[citation]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "citation",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `citation` — se connector-dokumentasjon for format."
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/luftfartstilsynet/aircraft": {
      "get": {
        "tags": [
          "connector:luftfartstilsynet"
        ],
        "operationId": "get_api_connectors_luftfartstilsynet_aircraft",
        "summary": "GET /api/connectors/luftfartstilsynet/aircraft Liste over registrerte luftfartøy i Norges luftfartøy",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/luftfartstilsynet/aircraft/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/luftfartstilsynet/aircraft/{registration}": {
      "get": {
        "tags": [
          "connector:luftfartstilsynet"
        ],
        "operationId": "get_api_connectors_luftfartstilsynet_aircraft__registration_",
        "summary": "GET /api/connectors/luftfartstilsynet/aircraft/[registration] Oppslag på ett luftfartøy via registre",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/luftfartstilsynet/aircraft/[registration]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLuftfartstilsynetAircraft",
                  "additionalProperties": false,
                  "description": "Ett luftfartøy fra Luftfartstilsynets norske luftfartøyregister (NLR).",
                  "required": [
                    "registration",
                    "category",
                    "type",
                    "manufacturer",
                    "serialNumber",
                    "yearBuilt",
                    "registrationDate",
                    "airworthinessCategories",
                    "maxTakeoffMassKg",
                    "icao24bit",
                    "operator",
                    "operatorOrgNumber",
                    "ownerContactOrgNumber",
                    "owners",
                    "source"
                  ],
                  "properties": {
                    "registration": {
                      "type": "string",
                      "description": "Registreringsmerke.",
                      "example": "LN-ABA"
                    },
                    "category": {
                      "type": "string",
                      "example": "Fly"
                    },
                    "type": {
                      "type": "string",
                      "description": "Luftfartøytype/modell.",
                      "example": "Cessna 172"
                    },
                    "manufacturer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Cessna Aircraft Company"
                    },
                    "serialNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "17280001"
                    },
                    "yearBuilt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "1998"
                    },
                    "registrationDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Registreringsdato i original DD.MM.YYYY-form.",
                      "example": "12.05.1998"
                    },
                    "airworthinessCategories": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Normal"
                      ]
                    },
                    "maxTakeoffMassKg": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Maks tillatt startvekt (kg).",
                      "example": 1157
                    },
                    "icao24bit": {
                      "description": "ICAO 24-bit-adresse i flere baser, eller null.",
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "decimal",
                            "binary",
                            "octal",
                            "hex"
                          ],
                          "properties": {
                            "decimal": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "4735234"
                            },
                            "binary": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "octal": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "hex": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "478D02"
                            }
                          }
                        }
                      ]
                    },
                    "operator": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Oslo Flyveklubb"
                    },
                    "operatorOrgNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Org.nr. for operatør — kan kobles mot brreg-connectoren.",
                      "example": "912345678"
                    },
                    "ownerContactOrgNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Org.nr. for eier/kontakt — kan kobles mot brreg-connectoren.",
                      "example": null
                    },
                    "owners": {
                      "type": "array",
                      "description": "Registrerte eiere.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "type",
                          "since",
                          "name",
                          "orgNumber",
                          "address",
                          "postalCode",
                          "postalPlace",
                          "country"
                        ],
                        "properties": {
                          "type": {
                            "type": "string",
                            "example": "Eier"
                          },
                          "since": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "01.01.2010"
                          },
                          "name": {
                            "type": "string",
                            "example": "Oslo Flyveklubb"
                          },
                          "orgNumber": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Org.nr. (9 siffer) — kan kobles mot brreg-connectoren.",
                            "example": "912345678"
                          },
                          "address": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Gardermoen"
                          },
                          "postalCode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2060"
                          },
                          "postalPlace": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Gardermoen"
                          },
                          "country": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Norge"
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "description": "Proveniens-streng (#74 explainability).",
                      "example": "luftfartstilsynet:nlr"
                    }
                  },
                  "example": {
                    "registration": "LN-ABA",
                    "category": "Fly",
                    "type": "Cessna 172",
                    "manufacturer": "Cessna Aircraft Company",
                    "serialNumber": "17280001",
                    "yearBuilt": "1998",
                    "registrationDate": "12.05.1998",
                    "airworthinessCategories": [
                      "Normal"
                    ],
                    "maxTakeoffMassKg": 1157,
                    "icao24bit": {
                      "decimal": "4735234",
                      "binary": "010001111000110100000010",
                      "octal": "21706402",
                      "hex": "478D02"
                    },
                    "operator": "Oslo Flyveklubb",
                    "operatorOrgNumber": "912345678",
                    "ownerContactOrgNumber": null,
                    "owners": [
                      {
                        "type": "Eier",
                        "since": "01.01.2010",
                        "name": "Oslo Flyveklubb",
                        "orgNumber": "912345678",
                        "address": "Gardermoen",
                        "postalCode": "2060",
                        "postalPlace": "Gardermoen",
                        "country": "Norge"
                      }
                    ],
                    "source": "luftfartstilsynet:nlr"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "registration",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `registration` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/luftfartstilsynet/health": {
      "get": {
        "tags": [
          "connector:luftfartstilsynet"
        ],
        "operationId": "get_api_connectors_luftfartstilsynet_health",
        "summary": "GET /api/connectors/luftfartstilsynet/health Default: statisk status (åpen kilde, ingen nøkkel).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/luftfartstilsynet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lysingsblad/health": {
      "get": {
        "tags": [
          "connector:lysingsblad"
        ],
        "operationId": "get_api_connectors_lysingsblad_health",
        "summary": "GET /api/connectors/lysingsblad/health Deep probe for Norsk Lysingsblad (#2728, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lysingsblad/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/lysingsblad/listing": {
      "get": {
        "tags": [
          "connector:lysingsblad"
        ],
        "operationId": "get_api_connectors_lysingsblad_listing",
        "summary": "GET /api/connectors/lysingsblad/listing?category=proklama&page=0 Kunngjøringer fra Norsk Lysingsblad",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/lysingsblad/listing/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLysingsbladListing",
                  "additionalProperties": false,
                  "description": "Paginert liste over kunngjøringer i Norsk lysingsblad innen én kategori (proklama, gjeldsforhandlinger, mortifikasjoner, andre).",
                  "required": [
                    "source",
                    "category",
                    "page",
                    "count",
                    "entries"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "lysingsblad"
                      ]
                    },
                    "category": {
                      "type": "string",
                      "enum": [
                        "proklama",
                        "gjeldsforhandlingar",
                        "mortifikasjonar",
                        "andre-kunngjeringar"
                      ]
                    },
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "count": {
                      "type": "integer",
                      "example": 20
                    },
                    "entries": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "upstreamId",
                          "id",
                          "source",
                          "category",
                          "publishedDate",
                          "detailUrl"
                        ],
                        "properties": {
                          "upstreamId": {
                            "type": "string",
                            "example": "2025-98765"
                          },
                          "id": {
                            "type": "string",
                            "example": "lysingsblad:2025-98765"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "lysingsblad"
                            ]
                          },
                          "category": {
                            "type": "string",
                            "enum": [
                              "proklama",
                              "gjeldsforhandlingar",
                              "mortifikasjonar",
                              "andre-kunngjeringar"
                            ]
                          },
                          "publishedDate": {
                            "type": "string",
                            "example": "2025-04-01"
                          },
                          "detailUrl": {
                            "type": "string",
                            "example": "https://www.lysingsbladet.no/kunngjoring/2025-98765"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "lysingsblad",
                    "category": "proklama",
                    "page": 1,
                    "count": 1,
                    "entries": [
                      {
                        "upstreamId": "2025-98765",
                        "id": "lysingsblad:2025-98765",
                        "source": "lysingsblad",
                        "category": "proklama",
                        "publishedDate": "2025-04-01",
                        "detailUrl": "https://www.lysingsbladet.no/kunngjoring/2025-98765"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/mattilsynet/by-orgnummer": {
      "get": {
        "tags": [
          "connector:mattilsynet"
        ],
        "operationId": "get_api_connectors_mattilsynet_by_orgnummer",
        "summary": "GET /api/connectors/mattilsynet/by-orgnummer?orgnummer=123456789 Oppslag av Smilefjes-tilsyn for én ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/mattilsynet/by-orgnummer/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/mattilsynet/health": {
      "get": {
        "tags": [
          "connector:mattilsynet"
        ],
        "operationId": "get_api_connectors_mattilsynet_health",
        "summary": "GET /api/connectors/mattilsynet/health Smoke-endepunkt for Mattilsynet Smilefjes-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/mattilsynet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/mattilsynet/inspections": {
      "get": {
        "tags": [
          "connector:mattilsynet"
        ],
        "operationId": "get_api_connectors_mattilsynet_inspections",
        "summary": "GET /api/connectors/mattilsynet/inspections?q=pizza&page=0&limit=20 Henter Smilefjes-inspeksjonsresu",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/mattilsynet/inspections/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/mattilsynet/kravpunkter": {
      "get": {
        "tags": [
          "connector:mattilsynet"
        ],
        "operationId": "get_api_connectors_mattilsynet_kravpunkter",
        "summary": "GET /api/connectors/mattilsynet/kravpunkter?tilsynid=...&orgnummer=...&q=...&page=0&limit=20 Dataset",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/mattilsynet/kravpunkter/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/met-yr/forecast": {
      "get": {
        "tags": [
          "connector:met-yr"
        ],
        "operationId": "get_api_connectors_met_yr_forecast",
        "summary": "GET /api/connectors/met-yr/forecast?lat=...&lon=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/met-yr/forecast/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorMetYrForecast",
                  "additionalProperties": false,
                  "description": "Normalisert stedsspesifikt værvarsel for én lokasjon (MET Norway / Yr Locationforecast 2.0). Koordinater, oppdateringstidspunkt, enheter og en tidsserie med øyeblikks- og prognoseverdier.",
                  "required": [
                    "lat",
                    "lon",
                    "updatedAt",
                    "units",
                    "timeseries",
                    "fetchedAt"
                  ],
                  "properties": {
                    "lat": {
                      "type": "number",
                      "description": "Breddegrad (WGS 84) hentet fra MET-responsens geometri.",
                      "example": 59.91
                    },
                    "lon": {
                      "type": "number",
                      "description": "Lengdegrad (WGS 84) hentet fra MET-responsens geometri.",
                      "example": 10.75
                    },
                    "altitude": {
                      "type": "number",
                      "description": "Høyde over havet i meter, fra MET-geometrien. Kan avvike fra forespurt altitude og utelates når MET ikke oppgir den.",
                      "example": 8
                    },
                    "updatedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601-tidspunkt for når MET sist oppdaterte varslet (`meta.updated_at`).",
                      "example": "2026-06-24T06:00:00Z"
                    },
                    "units": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Enheter for rådatafelt, videresendt umodifisert fra MET (`meta.units`). Nøkler er MET-feltnavn, verdier er enheter.",
                      "example": {
                        "air_temperature": "celsius",
                        "wind_speed": "m/s",
                        "precipitation_amount": "mm",
                        "relative_humidity": "%"
                      }
                    },
                    "timeseries": {
                      "type": "array",
                      "description": "Tidsserie med varselverdier (tom hvis MET ikke returnerer steg).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Ett tidssteg i varslet.",
                        "required": [
                          "time",
                          "instant"
                        ],
                        "properties": {
                          "time": {
                            "type": "string",
                            "format": "date-time",
                            "description": "ISO 8601-tidspunkt for dette tidssteget.",
                            "example": "2026-06-24T12:00:00Z"
                          },
                          "instant": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Øyeblikksverdier ved `time`. Alle felt er valgfrie — MET utelater det som mangler (avhengig av variant compact/complete).",
                            "properties": {
                              "airTemperature": {
                                "type": "number",
                                "description": "Lufttemperatur (celsius).",
                                "example": 17.4
                              },
                              "airPressureAtSeaLevel": {
                                "type": "number",
                                "description": "Lufttrykk ved havnivå (hPa).",
                                "example": 1013.2
                              },
                              "cloudAreaFraction": {
                                "type": "number",
                                "description": "Skydekke (%).",
                                "example": 42.1
                              },
                              "relativeHumidity": {
                                "type": "number",
                                "description": "Relativ luftfuktighet (%).",
                                "example": 65
                              },
                              "windFromDirection": {
                                "type": "number",
                                "description": "Vindretning i grader (0–360, fra-retning).",
                                "example": 210.5
                              },
                              "windSpeed": {
                                "type": "number",
                                "description": "Vindhastighet (m/s).",
                                "example": 4.2
                              },
                              "windSpeedOfGust": {
                                "type": "number",
                                "description": "Vindkast (m/s) — kun i `complete`-variant.",
                                "example": 7.8
                              },
                              "uvIndex": {
                                "type": "number",
                                "description": "UV-indeks for klar himmel — kun i `complete`-variant.",
                                "example": 3.1
                              },
                              "dewPointTemperature": {
                                "type": "number",
                                "description": "Duggpunktstemperatur (celsius) — kun i `complete`-variant.",
                                "example": 11
                              },
                              "fogAreaFraction": {
                                "type": "number",
                                "description": "Tåkedekke (%) — kun i `complete`-variant.",
                                "example": 0
                              }
                            }
                          },
                          "next1Hours": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Prognose for neste 1 time (finnes for tidlige tidssteg).",
                            "properties": {
                              "symbolCode": {
                                "type": "string",
                                "description": "Yr-værsymbolkode (`summary.symbol_code`).",
                                "example": "partlycloudy_day"
                              },
                              "precipitationAmount": {
                                "type": "number",
                                "description": "Forventet nedbørsmengde (mm).",
                                "example": 0
                              },
                              "probabilityOfPrecipitation": {
                                "type": "number",
                                "description": "Sannsynlighet for nedbør (%).",
                                "example": 12
                              },
                              "probabilityOfThunder": {
                                "type": "number",
                                "description": "Sannsynlighet for torden (%).",
                                "example": 0
                              }
                            }
                          },
                          "next6Hours": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Prognose for neste 6 timer.",
                            "properties": {
                              "symbolCode": {
                                "type": "string",
                                "description": "Yr-værsymbolkode (`summary.symbol_code`).",
                                "example": "cloudy"
                              },
                              "precipitationAmount": {
                                "type": "number",
                                "description": "Forventet nedbørsmengde (mm).",
                                "example": 1.4
                              },
                              "airTemperatureMax": {
                                "type": "number",
                                "description": "Maks lufttemperatur i perioden (celsius).",
                                "example": 19.1
                              },
                              "airTemperatureMin": {
                                "type": "number",
                                "description": "Min lufttemperatur i perioden (celsius).",
                                "example": 15.6
                              }
                            }
                          },
                          "next12Hours": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Prognose for neste 12 timer.",
                            "properties": {
                              "symbolCode": {
                                "type": "string",
                                "description": "Yr-værsymbolkode (`summary.symbol_code`).",
                                "example": "rain"
                              },
                              "precipitationAmount": {
                                "type": "number",
                                "description": "Forventet nedbørsmengde (mm).",
                                "example": 3.2
                              },
                              "airTemperatureMax": {
                                "type": "number",
                                "description": "Maks lufttemperatur i perioden (celsius).",
                                "example": 18.3
                              },
                              "airTemperatureMin": {
                                "type": "number",
                                "description": "Min lufttemperatur i perioden (celsius).",
                                "example": 13.9
                              }
                            }
                          }
                        }
                      }
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601-tidspunkt for når ketl hentet data (#74 explainability).",
                      "example": "2026-06-24T11:58:42.117Z"
                    }
                  },
                  "example": {
                    "lat": 59.91,
                    "lon": 10.75,
                    "altitude": 8,
                    "updatedAt": "2026-06-24T06:00:00Z",
                    "units": {
                      "air_temperature": "celsius",
                      "wind_speed": "m/s",
                      "precipitation_amount": "mm",
                      "relative_humidity": "%"
                    },
                    "timeseries": [
                      {
                        "time": "2026-06-24T12:00:00Z",
                        "instant": {
                          "airTemperature": 17.4,
                          "airPressureAtSeaLevel": 1013.2,
                          "cloudAreaFraction": 42.1,
                          "relativeHumidity": 65,
                          "windFromDirection": 210.5,
                          "windSpeed": 4.2
                        },
                        "next1Hours": {
                          "symbolCode": "partlycloudy_day",
                          "precipitationAmount": 0,
                          "probabilityOfPrecipitation": 12
                        },
                        "next6Hours": {
                          "symbolCode": "cloudy",
                          "precipitationAmount": 1.4,
                          "airTemperatureMax": 19.1,
                          "airTemperatureMin": 15.6
                        }
                      }
                    ],
                    "fetchedAt": "2026-06-24T11:58:42.117Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.91"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.75"
          }
        ]
      }
    },
    "/api/connectors/met-yr/health": {
      "get": {
        "tags": [
          "connector:met-yr"
        ],
        "operationId": "get_api_connectors_met_yr_health",
        "summary": "GET /api/connectors/met-yr/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/met-yr/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/met-yr/locationforecast": {
      "get": {
        "tags": [
          "connector:met-yr"
        ],
        "operationId": "get_api_connectors_met_yr_locationforecast",
        "summary": "GET /api/connectors/met-yr/locationforecast",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/met-yr/locationforecast/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.91"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.75"
          }
        ]
      }
    },
    "/api/connectors/met-yr/locationforecast/compact": {
      "get": {
        "tags": [
          "connector:met-yr"
        ],
        "operationId": "get_api_connectors_met_yr_locationforecast_compact",
        "summary": "GET /api/connectors/met-yr/locationforecast/compact?lat=...&lon=...&altitude=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/met-yr/locationforecast/compact/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.91"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.75"
          }
        ]
      }
    },
    "/api/connectors/met-yr/locationforecast/complete": {
      "get": {
        "tags": [
          "connector:met-yr"
        ],
        "operationId": "get_api_connectors_met_yr_locationforecast_complete",
        "summary": "GET /api/connectors/met-yr/locationforecast/complete?lat=...&lon=...&altitude=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/met-yr/locationforecast/complete/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.91"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.75"
          }
        ]
      }
    },
    "/api/connectors/met-yr/locationforecast/status": {
      "get": {
        "tags": [
          "connector:met-yr"
        ],
        "operationId": "get_api_connectors_met_yr_locationforecast_status",
        "summary": "GET /api/connectors/met-yr/locationforecast/status Status-/diagnostikk-endepunkt for MET Locationfor",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/met-yr/locationforecast/status/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodir-luftkvalitet/aqi": {
      "get": {
        "tags": [
          "connector:miljodir-luftkvalitet"
        ],
        "operationId": "get_api_connectors_miljodir_luftkvalitet_aqi",
        "summary": "GET /api/connectors/miljodir-luftkvalitet/aqi?areas=&components= Klassifiserer siste time-målinger t",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodir-luftkvalitet/aqi/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodir-luftkvalitet/health": {
      "get": {
        "tags": [
          "connector:miljodir-luftkvalitet"
        ],
        "operationId": "get_api_connectors_miljodir_luftkvalitet_health",
        "summary": "GET /api/connectors/miljodir-luftkvalitet/health Default: statisk metadata (alltid 200, åpen kilde).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodir-luftkvalitet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodir-luftkvalitet/measurements": {
      "get": {
        "tags": [
          "connector:miljodir-luftkvalitet"
        ],
        "operationId": "get_api_connectors_miljodir_luftkvalitet_measurements",
        "summary": "GET /api/connectors/miljodir-luftkvalitet/measurements?stations=&areas=&components= Siste time-målin",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodir-luftkvalitet/measurements/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodir-luftkvalitet/stations": {
      "get": {
        "tags": [
          "connector:miljodir-luftkvalitet"
        ],
        "operationId": "get_api_connectors_miljodir_luftkvalitet_stations",
        "summary": "GET /api/connectors/miljodir-luftkvalitet/stations?areas=&components= Stasjonsmetadata fra Miljødire",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodir-luftkvalitet/stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLuftkvalitetStations",
                  "additionalProperties": false,
                  "description": "Norske luftkvalitets-målestasjoner (metadata, uten måleverdier): posisjon, kommune/fylke, stasjonstype og hvilke komponenter som måles.",
                  "required": [
                    "stations",
                    "total"
                  ],
                  "properties": {
                    "stations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "kommune",
                          "fylke",
                          "lat",
                          "lon",
                          "stasjonsType",
                          "komponenter"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "NO0001A"
                          },
                          "navn": {
                            "type": "string",
                            "example": "Kirkeveien"
                          },
                          "kommune": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "fylke": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "lat": {
                            "type": "number",
                            "example": 59.9333
                          },
                          "lon": {
                            "type": "number",
                            "example": 10.7167
                          },
                          "stasjonsType": {
                            "type": "string",
                            "enum": [
                              "trafikk",
                              "bakgrunn",
                              "industri"
                            ]
                          },
                          "komponenter": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "PM10",
                                "PM2.5",
                                "NO2",
                                "O3",
                                "SO2"
                              ]
                            },
                            "example": [
                              "PM10",
                              "NO2"
                            ]
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 42
                    }
                  },
                  "example": {
                    "stations": [
                      {
                        "id": "NO0001A",
                        "navn": "Kirkeveien",
                        "kommune": "Oslo",
                        "fylke": "Oslo",
                        "lat": 59.9333,
                        "lon": 10.7167,
                        "stasjonsType": "trafikk",
                        "komponenter": [
                          "PM10",
                          "NO2"
                        ]
                      }
                    ],
                    "total": 1
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodirektoratet/emissions": {
      "get": {
        "tags": [
          "connector:miljodirektoratet"
        ],
        "operationId": "get_api_connectors_miljodirektoratet_emissions",
        "summary": "GET /api/connectors/miljodirektoratet/emissions (#4323) Klimagassutslipp er katalog-merket `status:\"",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodirektoratet/emissions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodirektoratet/health": {
      "get": {
        "tags": [
          "connector:miljodirektoratet"
        ],
        "operationId": "get_api_connectors_miljodirektoratet_health",
        "summary": "GET /api/connectors/miljodirektoratet/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodirektoratet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/miljodirektoratet/protected-areas": {
      "get": {
        "tags": [
          "connector:miljodirektoratet"
        ],
        "operationId": "get_api_connectors_miljodirektoratet_protected_areas",
        "summary": "GET /api/connectors/miljodirektoratet/protected-areas?municipality=1201 Henter verneområder fra Milj",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/miljodirektoratet/protected-areas/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalarkivet/health": {
      "get": {
        "tags": [
          "connector:nasjonalarkivet"
        ],
        "operationId": "get_api_connectors_nasjonalarkivet_health",
        "summary": "GET /api/connectors/nasjonalarkivet/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalarkivet/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalarkivet/identify": {
      "get": {
        "tags": [
          "connector:nasjonalarkivet"
        ],
        "operationId": "get_api_connectors_nasjonalarkivet_identify",
        "summary": "GET /api/connectors/nasjonalarkivet/identify",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalarkivet/identify/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNasjonalarkivetIdentify",
                  "additionalProperties": false,
                  "description": "OAI-PMH repository-metadata for Nasjonalarkivet (Arkivverket). Rota ER Identify-objektet. Alle felt er `null` når OAI-PMH-svaret utelater dem.",
                  "required": [
                    "repositoryName",
                    "baseURL",
                    "protocolVersion",
                    "adminEmail",
                    "earliestDatestamp",
                    "deletedRecord",
                    "granularity"
                  ],
                  "properties": {
                    "repositoryName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Navn på OAI-PMH-repositoriet.",
                      "example": "Arkivverket OAI-PMH"
                    },
                    "baseURL": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Repositoriets OAI-PMH base-URL.",
                      "example": "https://oai.arkivverket.no/OAI-PMH/"
                    },
                    "protocolVersion": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "OAI-PMH-protokollversjon.",
                      "example": "2.0"
                    },
                    "adminEmail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Administratorens e-postadresse.",
                      "example": "post@arkivverket.no"
                    },
                    "earliestDatestamp": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tidligste datostempel i repositoriet.",
                      "example": "2001-01-01"
                    },
                    "deletedRecord": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Repositoriets policy for slettede poster (no/persistent/transient).",
                      "example": "transient"
                    },
                    "granularity": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Datostempel-granularitet.",
                      "example": "YYYY-MM-DDThh:mm:ssZ"
                    }
                  },
                  "example": {
                    "repositoryName": "Arkivverket OAI-PMH",
                    "baseURL": "https://oai.arkivverket.no/OAI-PMH/",
                    "protocolVersion": "2.0",
                    "adminEmail": "post@arkivverket.no",
                    "earliestDatestamp": "2001-01-01",
                    "deletedRecord": "transient",
                    "granularity": "YYYY-MM-DDThh:mm:ssZ"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalarkivet/records": {
      "get": {
        "tags": [
          "connector:nasjonalarkivet"
        ],
        "operationId": "get_api_connectors_nasjonalarkivet_records",
        "summary": "GET /api/connectors/nasjonalarkivet/records",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalarkivet/records/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNasjonalarkivetRecords",
                  "additionalProperties": false,
                  "description": "OAI-PMH-poster (Dublin Core) fra Nasjonalarkivet, med paginerings-token.",
                  "required": [
                    "records",
                    "resumptionToken"
                  ],
                  "properties": {
                    "records": {
                      "type": "array",
                      "description": "Poster (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én OAI-PMH-post (Dublin Core-felt).",
                        "required": [
                          "identifier",
                          "datestamp",
                          "setSpec",
                          "status",
                          "title",
                          "creator",
                          "date",
                          "description"
                        ],
                        "properties": {
                          "identifier": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "OAI-PMH-postidentifikator.",
                            "example": "oai:arkivverket.no:12345"
                          },
                          "datestamp": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Datostempel for siste endring.",
                            "example": "2020-05-01"
                          },
                          "setSpec": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Settet posten tilhører.",
                            "example": "arkiv"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Header-status; `\"deleted\"` for slettede poster, ellers `null`.",
                            "example": null
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dublin Core `dc:title`.",
                            "example": "Kirkebok 1801"
                          },
                          "creator": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dublin Core `dc:creator`.",
                            "example": "Statsarkivet i Oslo"
                          },
                          "date": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dublin Core `dc:date`.",
                            "example": "1801"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Dublin Core `dc:description`.",
                            "example": "Ministerialbok for Aker prestegjeld."
                          }
                        }
                      }
                    },
                    "resumptionToken": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Token for neste side (send som `resumptionToken`-param). `null` når det ikke er flere sider.",
                      "example": "abc123:100"
                    }
                  },
                  "example": {
                    "records": [
                      {
                        "identifier": "oai:arkivverket.no:12345",
                        "datestamp": "2020-05-01",
                        "setSpec": "arkiv",
                        "status": null,
                        "title": "Kirkebok 1801",
                        "creator": "Statsarkivet i Oslo",
                        "date": "1801",
                        "description": "Ministerialbok for Aker prestegjeld."
                      }
                    ],
                    "resumptionToken": "abc123:100"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalarkivet/sets": {
      "get": {
        "tags": [
          "connector:nasjonalarkivet"
        ],
        "operationId": "get_api_connectors_nasjonalarkivet_sets",
        "summary": "GET /api/connectors/nasjonalarkivet/sets",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalarkivet/sets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNasjonalarkivetSets",
                  "additionalProperties": false,
                  "description": "OAI-PMH set-hierarki (samlinger) for Nasjonalarkivet, med paginerings-token.",
                  "required": [
                    "sets",
                    "resumptionToken"
                  ],
                  "properties": {
                    "sets": {
                      "type": "array",
                      "description": "Sett/samlinger (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Ett OAI-PMH-sett.",
                        "required": [
                          "setSpec",
                          "setName"
                        ],
                        "properties": {
                          "setSpec": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Maskinlesbar set-identifikator (brukes som `set`-filter).",
                            "example": "arkiv"
                          },
                          "setName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Menneskelesbart set-navn.",
                            "example": "Arkiv"
                          }
                        }
                      }
                    },
                    "resumptionToken": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Token for neste side (send som `resumptionToken`-param). `null` når det ikke er flere sider.",
                      "example": null
                    }
                  },
                  "example": {
                    "sets": [
                      {
                        "setSpec": "arkiv",
                        "setName": "Arkiv"
                      },
                      {
                        "setSpec": "foto",
                        "setName": "Fotografier"
                      }
                    ],
                    "resumptionToken": null
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalbiblioteket/health": {
      "get": {
        "tags": [
          "connector:nasjonalbiblioteket"
        ],
        "operationId": "get_api_connectors_nasjonalbiblioteket_health",
        "summary": "GET /api/connectors/nasjonalbiblioteket/health Default: statisk metadata (rask).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalbiblioteket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalbiblioteket/items": {
      "get": {
        "tags": [
          "connector:nasjonalbiblioteket"
        ],
        "operationId": "get_api_connectors_nasjonalbiblioteket_items",
        "summary": "GET /api/connectors/nasjonalbiblioteket/items Søk i Nasjonalbibliotekets digitale katalog (12+ milli",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalbiblioteket/items/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nasjonalbiblioteket/items/{id}": {
      "get": {
        "tags": [
          "connector:nasjonalbiblioteket"
        ],
        "operationId": "get_api_connectors_nasjonalbiblioteket_items__id_",
        "summary": "GET /api/connectors/nasjonalbiblioteket/items/[id] Hent ett verk fra Nasjonalbibliotekets katalog me",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalbiblioteket/items/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNasjonalbiblioteketItem",
                  "additionalProperties": false,
                  "description": "Ett normalisert verk fra Nasjonalbibliotekets katalog-API (api.nb.no). Inneholder kjernemetadata, identifikatorer og tilgangsstatus.",
                  "required": [
                    "id",
                    "title",
                    "subtitle",
                    "creators",
                    "publishedYear",
                    "publisher",
                    "place",
                    "mediaTypes",
                    "languages",
                    "pageCount",
                    "subjects",
                    "identifiers",
                    "thumbnailUrl",
                    "isPublicDomain"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "NB-verks-ID. Tom streng hvis rå-svaret mangler `id`.",
                      "example": "URN:NBN:no-nb_digibok_2008051404010"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Hovedtittel. `null` hvis tittel mangler.",
                      "example": "Sult"
                    },
                    "subtitle": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Undertittel. `null` hvis den mangler.",
                      "example": "Roman"
                    },
                    "creators": {
                      "type": "array",
                      "description": "Opphavspersoner som strenger på formen \"Navn (rolle)\". Tom array hvis ingen er registrert.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Hamsun, Knut (forfatter)"
                      ]
                    },
                    "publishedYear": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Utgivelsesår utledet fra `originInfo.issued` (1000–2200). `null` hvis ikke funnet.",
                      "example": 1890
                    },
                    "publisher": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Forlag fra `originInfo.publisher`. `null` hvis mangler.",
                      "example": "Gyldendal"
                    },
                    "place": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Utgivelsessted fra `originInfo.place`. `null` hvis mangler.",
                      "example": "Kristiania"
                    },
                    "mediaTypes": {
                      "type": "array",
                      "description": "NB-medietyper for verket. Tom array hvis ingen.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "bok"
                      ]
                    },
                    "languages": {
                      "type": "array",
                      "description": "Språkkoder for verket. Tom array hvis ingen.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "nob"
                      ]
                    },
                    "pageCount": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall sider hvis NB oppgir det numerisk, ellers `null`.",
                      "example": 235
                    },
                    "subjects": {
                      "type": "array",
                      "description": "Emneord fra `subjectName`. Tom array hvis ingen.",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Norsk litteratur",
                        "Roman"
                      ]
                    },
                    "identifiers": {
                      "type": "array",
                      "description": "Flatet liste av identifikatorer utledet fra NBs `identifiers`-objekt (varierende nøkler som urn, isbn, issn, oaiId). Tom array hvis ingen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "type",
                          "value"
                        ],
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Identifikator-type (nøkkelen i NBs identifiers-objekt).",
                            "example": "isbn"
                          },
                          "value": {
                            "type": "string",
                            "description": "Identifikator-verdi.",
                            "example": "9788205123456"
                          }
                        }
                      },
                      "example": [
                        {
                          "type": "urn",
                          "value": "URN:NBN:no-nb_digibok_2008051404010"
                        }
                      ]
                    },
                    "thumbnailUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Beste tilgjengelige miniatyrbilde-lenke fra `_links` (thumbnail_custom/_medium/_small/_large/thumbnail). `null` hvis ingen.",
                      "example": "https://api.nb.no/catalog/v1/iiif/URN:NBN:no-nb_digibok_2008051404010/thumbnail_medium"
                    },
                    "isPublicDomain": {
                      "type": "boolean",
                      "description": "Utledet av om verket er i det fri (fra `accessInfo.isPublicDomain`, lisens \"publicdomain\"/\"cc0\").",
                      "example": false
                    }
                  },
                  "example": {
                    "id": "URN:NBN:no-nb_digibok_2008051404010",
                    "title": "Sult",
                    "subtitle": "Roman",
                    "creators": [
                      "Hamsun, Knut (forfatter)"
                    ],
                    "publishedYear": 1890,
                    "publisher": "Gyldendal",
                    "place": "Kristiania",
                    "mediaTypes": [
                      "bok"
                    ],
                    "languages": [
                      "nob"
                    ],
                    "pageCount": 235,
                    "subjects": [
                      "Norsk litteratur",
                      "Roman"
                    ],
                    "identifiers": [
                      {
                        "type": "urn",
                        "value": "URN:NBN:no-nb_digibok_2008051404010"
                      }
                    ],
                    "thumbnailUrl": "https://api.nb.no/catalog/v1/iiif/URN:NBN:no-nb_digibok_2008051404010/thumbnail_medium",
                    "isPublicDomain": false
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nasjonalbiblioteket/newspapers": {
      "get": {
        "tags": [
          "connector:nasjonalbiblioteket"
        ],
        "operationId": "get_api_connectors_nasjonalbiblioteket_newspapers",
        "summary": "GET /api/connectors/nasjonalbiblioteket/newspapers Søk i Nasjonalbibliotekets digitaliserte avissaml",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nasjonalbiblioteket/newspapers/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nationalbanken/exchange-rates": {
      "get": {
        "tags": [
          "connector:nationalbanken"
        ],
        "operationId": "get_api_connectors_nationalbanken_exchange_rates",
        "summary": "GET /api/connectors/nationalbanken/exchange-rates",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nationalbanken/exchange-rates/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nationalbanken/health": {
      "get": {
        "tags": [
          "connector:nationalbanken"
        ],
        "operationId": "get_api_connectors_nationalbanken_health",
        "summary": "GET /api/connectors/nationalbanken/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nationalbanken/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nationalbanken/inflation": {
      "get": {
        "tags": [
          "connector:nationalbanken"
        ],
        "operationId": "get_api_connectors_nationalbanken_inflation",
        "summary": "GET /api/connectors/nationalbanken/inflation Hent forbrugerprisindeks (CPI) fra Nationalbanken stati",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nationalbanken/inflation/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nationalbanken/policy-rate": {
      "get": {
        "tags": [
          "connector:nationalbanken"
        ],
        "operationId": "get_api_connectors_nationalbanken_policy_rate",
        "summary": "GET /api/connectors/nationalbanken/policy-rate",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nationalbanken/policy-rate/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/naturbase/health": {
      "get": {
        "tags": [
          "connector:naturbase"
        ],
        "operationId": "get_api_connectors_naturbase_health",
        "summary": "GET /api/connectors/naturbase/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturbase/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/naturbase/nature-types": {
      "get": {
        "tags": [
          "connector:naturbase"
        ],
        "operationId": "get_api_connectors_naturbase_nature_types",
        "summary": "GET /api/connectors/naturbase/nature-types?bbox=10.6,59.85,10.85,60.0 Kartlagte naturtyper (DN-håndb",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturbase/nature-types/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/naturbase/protected-areas": {
      "get": {
        "tags": [
          "connector:naturbase"
        ],
        "operationId": "get_api_connectors_naturbase_protected_areas",
        "summary": "GET /api/connectors/naturbase/protected-areas?bbox=10.6,59.85,10.85,60.0 Verneområder (naturreservat",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturbase/protected-areas/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/naturbase/protected-areas/{id}": {
      "get": {
        "tags": [
          "connector:naturbase"
        ],
        "operationId": "get_api_connectors_naturbase_protected_areas__id_",
        "summary": "GET /api/connectors/naturbase/protected-areas/{id} Slår opp ett verneområde på `naturvernId`-id-en `",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturbase/protected-areas/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNaturbaseProtectedArea",
                  "additionalProperties": false,
                  "description": "Ett normalisert verneområde fra Naturbase, slått opp på område-id. Verne- kategori (nasjonal + IUCN), vernedato, kommune og forvaltningsmyndighet.",
                  "required": [
                    "id",
                    "name"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "VV00000123"
                    },
                    "name": {
                      "type": "string",
                      "description": "Områdenavn (alltid satt).",
                      "example": "Rondane nasjonalpark"
                    },
                    "officialName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Rondane nasjonalpark"
                    },
                    "protectionType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Nasjonalpark"
                    },
                    "protectionTypeAggregated": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Nasjonalpark"
                    },
                    "protectionDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-dato for vernevedtak.",
                      "example": "1970-12-21"
                    },
                    "municipality": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Sel"
                    },
                    "managementAuthority": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Rondane-Dovre nasjonalparkstyre"
                    },
                    "iucnCategory": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "II"
                    },
                    "factsheetUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "https://faktaark.naturbase.no/?id=VV00000123"
                    }
                  },
                  "example": {
                    "id": "VV00000123",
                    "name": "Rondane nasjonalpark",
                    "officialName": "Rondane nasjonalpark",
                    "protectionType": "Nasjonalpark",
                    "protectionTypeAggregated": "Nasjonalpark",
                    "protectionDate": "1970-12-21",
                    "municipality": "Sel",
                    "managementAuthority": "Rondane-Dovre nasjonalparkstyre",
                    "iucnCategory": "II",
                    "factsheetUrl": "https://faktaark.naturbase.no/?id=VV00000123"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/naturbase/species/{taxonId}": {
      "get": {
        "tags": [
          "connector:naturbase"
        ],
        "operationId": "get_api_connectors_naturbase_species__taxonId_",
        "summary": "GET /api/connectors/naturbase/species/{taxonId} Artsobservasjoner og taksonomi fra Artsdatabanken.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturbase/species/[taxonId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNoArtskartTaxon",
                  "additionalProperties": false,
                  "description": "Ett normalisert takson fra Artsdatabankens Artskart, slått opp på takson-id. Vitenskapelig/norsk/engelsk navn + full taksonomisk hierarki (rike → slekt).",
                  "required": [
                    "id",
                    "source",
                    "retrievedAt"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Takson-id (kanonisk, fra Artskart).",
                      "example": "40631"
                    },
                    "scientificName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ursus maritimus"
                    },
                    "norwegianName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "isbjørn"
                    },
                    "englishName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Polar bear"
                    },
                    "kingdom": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Animalia"
                    },
                    "phylum": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Chordata"
                    },
                    "class_": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Taksonomisk klasse (serialisert som `class_`).",
                      "example": "Mammalia"
                    },
                    "order": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Carnivora"
                    },
                    "family": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ursidae"
                    },
                    "genus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ursus"
                    },
                    "taxonRank": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Art"
                    },
                    "taxonStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Gyldig"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "no-artskart"
                      ]
                    },
                    "retrievedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "id": "40631",
                    "scientificName": "Ursus maritimus",
                    "norwegianName": "isbjørn",
                    "englishName": "Polar bear",
                    "kingdom": "Animalia",
                    "phylum": "Chordata",
                    "class_": "Mammalia",
                    "order": "Carnivora",
                    "family": "Ursidae",
                    "genus": "Ursus",
                    "taxonRank": "Art",
                    "taxonStatus": "Gyldig",
                    "source": "no-artskart",
                    "retrievedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "taxonId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `taxonId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/naturvardsverket/health": {
      "get": {
        "tags": [
          "connector:naturvardsverket"
        ],
        "operationId": "get_api_connectors_naturvardsverket_health",
        "summary": "GET /api/connectors/naturvardsverket/health Default: statisk metadata med per-endepunkt-status (#341",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturvardsverket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/naturvardsverket/protected-areas": {
      "get": {
        "tags": [
          "connector:naturvardsverket"
        ],
        "operationId": "get_api_connectors_naturvardsverket_protected_areas",
        "summary": "GET /api/connectors/naturvardsverket/protected-areas?type=NR&county=Stockholm&municipality=Nora&limi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/naturvardsverket/protected-areas/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-grunnbelop/by-date": {
      "get": {
        "tags": [
          "connector:nav-grunnbelop"
        ],
        "operationId": "get_api_connectors_nav_grunnbelop_by_date",
        "summary": "GET /api/connectors/nav-grunnbelop/by-date?date=YYYY-MM-DD Returnerer grunnbeløpet som var gyldig på",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-grunnbelop/by-date/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNavGrunnbelop",
                  "additionalProperties": false,
                  "description": "Ett grunnbeløp (G) gyldig fra en gitt dato.",
                  "required": [
                    "dato",
                    "grunnbeloep",
                    "grunnbeloepPerMaaned",
                    "gjennomsnittligAarligGrunnbeloep",
                    "omregningsfaktor"
                  ],
                  "properties": {
                    "dato": {
                      "type": "string",
                      "description": "Ikrafttredelsesdato for satsen (ISO-8601 `YYYY-MM-DD`).",
                      "example": "2025-05-01"
                    },
                    "grunnbeloep": {
                      "type": "number",
                      "description": "Årlig grunnbeløp i kroner.",
                      "example": 130160
                    },
                    "grunnbeloepPerMaaned": {
                      "type": "number",
                      "description": "Grunnbeløp per måned i kroner.",
                      "example": 10847
                    },
                    "gjennomsnittligAarligGrunnbeloep": {
                      "type": "number",
                      "description": "Gjennomsnittlig årlig grunnbeløp i kroner.",
                      "example": 124028
                    },
                    "omregningsfaktor": {
                      "type": "number",
                      "description": "Omregningsfaktor mot forrige sats.",
                      "example": 1.046
                    }
                  },
                  "example": {
                    "dato": "2025-05-01",
                    "grunnbeloep": 130160,
                    "grunnbeloepPerMaaned": 10847,
                    "gjennomsnittligAarligGrunnbeloep": 124028,
                    "omregningsfaktor": 1.046
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Dato (YYYY-MM-DD) for grunnbeløp-oppslag",
            "example": "2024-05-01"
          }
        ]
      }
    },
    "/api/connectors/nav-grunnbelop/current": {
      "get": {
        "tags": [
          "connector:nav-grunnbelop"
        ],
        "operationId": "get_api_connectors_nav_grunnbelop_current",
        "summary": "GET /api/connectors/nav-grunnbelop/current Returnerer gjeldende grunnbeløp (G) og gjeldende engangss",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-grunnbelop/current/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNavGrunnbelopCurrent",
                  "additionalProperties": false,
                  "description": "Gjeldende grunnbeløp (G) og engangsstønad fra NAV (g.nav.no). Ved upstream-\nutilgjengelighet returneres siste kjente verdi med `source: \"fallback\"`.\n",
                  "required": [
                    "grunnbelop",
                    "engangsstonad"
                  ],
                  "properties": {
                    "grunnbelop": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "dato",
                        "grunnbeloep",
                        "grunnbeloepPerMaaned",
                        "gjennomsnittligAarligGrunnbeloep",
                        "omregningsfaktor"
                      ],
                      "description": "Grunnbeløpet (G) slik NAV oppgir det.",
                      "properties": {
                        "dato": {
                          "type": "string",
                          "description": "Ikrafttredelsesdato for satsen (ISO-8601 `YYYY-MM-DD`).",
                          "example": "2025-05-01"
                        },
                        "grunnbeloep": {
                          "type": "number",
                          "description": "Årlig grunnbeløp i kroner.",
                          "example": 130160
                        },
                        "grunnbeloepPerMaaned": {
                          "type": "number",
                          "description": "Grunnbeløp per måned i kroner.",
                          "example": 10847
                        },
                        "gjennomsnittligAarligGrunnbeloep": {
                          "type": "number",
                          "description": "Gjennomsnittlig årlig grunnbeløp i kroner.",
                          "example": 124028
                        },
                        "omregningsfaktor": {
                          "type": "number",
                          "description": "Omregningsfaktor mot forrige sats.",
                          "example": 1.046
                        }
                      }
                    },
                    "engangsstonad": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "fom",
                        "tom",
                        "verdi"
                      ],
                      "description": "Engangsstønad ved fødsel/adopsjon.",
                      "properties": {
                        "fom": {
                          "type": "string",
                          "description": "Gyldig fra og med (ISO-8601 `YYYY-MM-DD`).",
                          "example": "2023-01-01"
                        },
                        "tom": {
                          "type": "string",
                          "description": "Gyldig til og med (ISO-8601 `YYYY-MM-DD`).",
                          "example": "2122-08-08"
                        },
                        "verdi": {
                          "type": "number",
                          "description": "Engangsstønadens beløp i kroner.",
                          "example": 92648
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "fallback"
                      ],
                      "description": "Til stede kun når svaret er en statisk fallback fordi NAV-API-et var\nutilgjengelig. Mangler ved ferske/cachede live-verdier.\n",
                      "example": "fallback"
                    },
                    "note": {
                      "type": "string",
                      "description": "Forklarende merknad som følger `source: \"fallback\"`.\n"
                    }
                  },
                  "example": {
                    "grunnbelop": {
                      "dato": "2025-05-01",
                      "grunnbeloep": 130160,
                      "grunnbeloepPerMaaned": 10847,
                      "gjennomsnittligAarligGrunnbeloep": 124028,
                      "omregningsfaktor": 1.046
                    },
                    "engangsstonad": {
                      "fom": "2023-01-01",
                      "tom": "2122-08-08",
                      "verdi": 92648
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-grunnbelop/health": {
      "get": {
        "tags": [
          "connector:nav-grunnbelop"
        ],
        "operationId": "get_api_connectors_nav_grunnbelop_health",
        "summary": "GET /api/connectors/nav-grunnbelop/health Default: statisk status (åpen API, ingen nøkkel).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-grunnbelop/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-grunnbelop/historikk": {
      "get": {
        "tags": [
          "connector:nav-grunnbelop"
        ],
        "operationId": "get_api_connectors_nav_grunnbelop_historikk",
        "summary": "GET /api/connectors/nav-grunnbelop/historikk?from=YYYY&to=YYYY Returnerer historiske grunnbeløp-verd",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-grunnbelop/historikk/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorNavGrunnbelopHistorikk",
                  "description": "Liste av historiske grunnbeløp (G), sortert kronologisk.",
                  "items": {
                    "type": "object",
                    "title": "ConnectorNavGrunnbelop",
                    "additionalProperties": false,
                    "description": "Ett grunnbeløp (G) gyldig fra en gitt dato.",
                    "required": [
                      "dato",
                      "grunnbeloep",
                      "grunnbeloepPerMaaned",
                      "gjennomsnittligAarligGrunnbeloep",
                      "omregningsfaktor"
                    ],
                    "properties": {
                      "dato": {
                        "type": "string",
                        "description": "Ikrafttredelsesdato for satsen (ISO-8601 `YYYY-MM-DD`).",
                        "example": "2025-05-01"
                      },
                      "grunnbeloep": {
                        "type": "number",
                        "description": "Årlig grunnbeløp i kroner.",
                        "example": 130160
                      },
                      "grunnbeloepPerMaaned": {
                        "type": "number",
                        "description": "Grunnbeløp per måned i kroner.",
                        "example": 10847
                      },
                      "gjennomsnittligAarligGrunnbeloep": {
                        "type": "number",
                        "description": "Gjennomsnittlig årlig grunnbeløp i kroner.",
                        "example": 124028
                      },
                      "omregningsfaktor": {
                        "type": "number",
                        "description": "Omregningsfaktor mot forrige sats.",
                        "example": 1.046
                      }
                    },
                    "example": {
                      "dato": "2025-05-01",
                      "grunnbeloep": 130160,
                      "grunnbeloepPerMaaned": 10847,
                      "gjennomsnittligAarligGrunnbeloep": 124028,
                      "omregningsfaktor": 1.046
                    }
                  },
                  "example": [
                    {
                      "dato": "2024-05-01",
                      "grunnbeloep": 124028,
                      "grunnbeloepPerMaaned": 10336,
                      "gjennomsnittligAarligGrunnbeloep": 118620,
                      "omregningsfaktor": 1.0455
                    },
                    {
                      "dato": "2025-05-01",
                      "grunnbeloep": 130160,
                      "grunnbeloepPerMaaned": 10847,
                      "gjennomsnittligAarligGrunnbeloep": 124028,
                      "omregningsfaktor": 1.046
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-lonn/health": {
      "get": {
        "tags": [
          "connector:nav-lonn"
        ],
        "operationId": "get_api_connectors_nav_lonn_health",
        "summary": "GET /api/connectors/nav-lonn/health (#2385) Default: statisk metadata via `handleNavLonnHealth()` (r",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-lonn/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-lonn/naering": {
      "get": {
        "tags": [
          "connector:nav-lonn"
        ],
        "operationId": "get_api_connectors_nav_lonn_naering",
        "summary": "GET /api/connectors/nav-lonn/naering (#2385) Lønn per NACE-næring.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-lonn/naering/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "nace",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]?\\d{0,4}(\\.\\d{1,2})?$"
            },
            "description": "NACE-næringskode (f.eks. 62 eller 62.01)",
            "example": "62.01"
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PRIVATE",
                "PUBLIC",
                "STATE",
                "ALL"
              ],
              "default": "ALL"
            },
            "description": "Sektorfilter",
            "example": "ALL"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Statistikkår",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/nav-lonn/yrker": {
      "get": {
        "tags": [
          "connector:nav-lonn"
        ],
        "operationId": "get_api_connectors_nav_lonn_yrker",
        "summary": "GET /api/connectors/nav-lonn/yrker (#2385) Søk i norsk lønnsstatistikk per STYRK-08-yrke.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-lonn/yrker/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-søk på yrkesnavn",
            "example": "sykepleier"
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PRIVATE",
                "PUBLIC",
                "STATE",
                "ALL"
              ],
              "default": "ALL"
            },
            "description": "Sektorfilter",
            "example": "ALL"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Statistikkår",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/nav-lonn/yrker/{code}": {
      "get": {
        "tags": [
          "connector:nav-lonn"
        ],
        "operationId": "get_api_connectors_nav_lonn_yrker__code_",
        "summary": "GET /api/connectors/nav-lonn/yrker/[code] (#2385) Lønnsdetalj for én STYRK-08-yrkeskode.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-lonn/yrker/[code]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNavLonnOccupation",
                  "additionalProperties": false,
                  "description": "Lønnsdetalj for én STYRK-08-yrkeskode fra NAV-LONN (SSB). Median-/kvartil- årslønn per sektor. Lønnstall er i NOK; nullbare ved anonymisering.",
                  "required": [
                    "occupationCode",
                    "year",
                    "count",
                    "entries"
                  ],
                  "properties": {
                    "occupationCode": {
                      "type": "string",
                      "description": "STYRK-08-yrkeskode det ble slått opp på.",
                      "example": "2511"
                    },
                    "year": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Årsfilter fra query, eller null når ikke oppgitt.",
                      "example": "2023"
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall lønnsrader i `entries`.",
                      "example": 4
                    },
                    "entries": {
                      "type": "array",
                      "description": "Én normalisert lønnsrad per sektor.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "occupationCode",
                          "sector",
                          "year",
                          "source"
                        ],
                        "properties": {
                          "occupationCode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2511"
                          },
                          "occupationName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Systemanalytikere/-arkitekter"
                          },
                          "industryCode": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "industryName": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sector": {
                            "type": "string",
                            "enum": [
                              "PRIVATE",
                              "PUBLIC",
                              "STATE",
                              "ALL"
                            ]
                          },
                          "year": {
                            "type": "integer",
                            "example": 2023
                          },
                          "medianAnnualSalary": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Median årslønn i NOK.",
                            "example": 780000
                          },
                          "p25": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "example": 660000
                          },
                          "p75": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "example": 912000
                          },
                          "sampleSize": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 15230
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "NAV-LONN"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "occupationCode": "2511",
                    "year": "2023",
                    "count": 1,
                    "entries": [
                      {
                        "occupationCode": "2511",
                        "occupationName": "Systemanalytikere/-arkitekter",
                        "industryCode": null,
                        "industryName": null,
                        "sector": "ALL",
                        "year": 2023,
                        "medianAnnualSalary": 780000,
                        "p25": 660000,
                        "p75": 912000,
                        "sampleSize": 15230,
                        "source": "NAV-LONN"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `code` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nav-stillinger/feed": {
      "get": {
        "tags": [
          "connector:nav-stillinger"
        ],
        "operationId": "get_api_connectors_nav_stillinger_feed",
        "summary": "GET /api/connectors/nav-stillinger/feed",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-stillinger/feed/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/nav-stillinger/health": {
      "get": {
        "tags": [
          "connector:nav-stillinger"
        ],
        "operationId": "get_api_connectors_nav_stillinger_health",
        "summary": "GET /api/connectors/nav-stillinger/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-stillinger/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-stillinger/vacancy": {
      "get": {
        "tags": [
          "connector:nav-stillinger"
        ],
        "operationId": "get_api_connectors_nav_stillinger_vacancy",
        "summary": "GET /api/connectors/nav-stillinger/vacancy",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-stillinger/vacancy/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "400": {
            "description": "Klientfeil — ugyldig query/payload (validation_failed).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "401": {
            "description": "Upstream auth-feil — credentials er konfigurert i Secret Manager, men upstream OAuth/API-nøkkel-flyt ble avvist. Sjekk at nøkkelen er gyldig og at relevante scopes er aktivert.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate-limit nådd — backoff og retry.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream svarer feil (5xx eller nettverksfeil). `upstream_error` indikerer at credentials fungerte, men data-endepunktet er nede.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "503": {
            "description": "Ruten lever, men miljøet mangler påkrevd credentials (`not_configured`). Dette er IKKE en kjørefeil — det er ventet inntil Secret Manager fylles ut. Smoke-/health-skript skal behandle 503 her som degraded, ikke down. Akseptanse fra #2845/#2846.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Stillingsannonse-UUID",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ],
        "x-ketl-credentials-required": true
      }
    },
    "/api/connectors/nav-yrkesskade/health": {
      "get": {
        "tags": [
          "connector:nav-yrkesskade"
        ],
        "operationId": "get_api_connectors_nav_yrkesskade_health",
        "summary": "GET /api/connectors/nav-yrkesskade/health Status for NAV yrkesskade-kodeverk-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-yrkesskade/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-yrkesskade/kodeverk": {
      "get": {
        "tags": [
          "connector:nav-yrkesskade"
        ],
        "operationId": "get_api_connectors_nav_yrkesskade_kodeverk",
        "summary": "GET /api/connectors/nav-yrkesskade/kodeverk Returnerer alle kodeverktyper fra NAV yrkesskade-kodever",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-yrkesskade/kodeverk/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav-yrkesskade/kodeverk/{type}": {
      "get": {
        "tags": [
          "connector:nav-yrkesskade"
        ],
        "operationId": "get_api_connectors_nav_yrkesskade_kodeverk__type_",
        "summary": "GET /api/connectors/nav-yrkesskade/kodeverk/[type] Returnerer kodeverdier for én type fra NAV yrkess",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav-yrkesskade/kodeverk/[type]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNavYrkesskadeKodeverk",
                  "additionalProperties": false,
                  "description": "Kodeverdier (kode → verdi) for én yrkesskade-kodeverkstype hos NAV.",
                  "required": [
                    "typenavn",
                    "kodeverdier",
                    "source"
                  ],
                  "properties": {
                    "typenavn": {
                      "type": "string",
                      "description": "Kodeverkstypen oppslaget gjelder.",
                      "example": "diagnose"
                    },
                    "kodeverdier": {
                      "type": "array",
                      "description": "Kode/verdi-parene for typen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "kode",
                          "verdi"
                        ],
                        "properties": {
                          "kode": {
                            "type": "string",
                            "example": "L72"
                          },
                          "verdi": {
                            "type": "string",
                            "example": "Støyskade"
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "NAV yrkesskade-kodeverkutforsker"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "NAV yrkesskade-kodeverkutforsker"
                    }
                  },
                  "example": {
                    "typenavn": "diagnose",
                    "kodeverdier": [
                      {
                        "kode": "L72",
                        "verdi": "Støyskade"
                      },
                      {
                        "kode": "H83",
                        "verdi": "Larmskade øre"
                      }
                    ],
                    "source": "NAV yrkesskade-kodeverkutforsker"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `type` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nav/benefits": {
      "get": {
        "tags": [
          "connector:nav"
        ],
        "operationId": "get_api_connectors_nav_benefits",
        "summary": "GET /api/connectors/nav/benefits NAV ytelsesstatistikk — sunset 2026 (#2030).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav/benefits/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/nav/health": {
      "get": {
        "tags": [
          "connector:nav"
        ],
        "operationId": "get_api_connectors_nav_health",
        "summary": "GET /api/connectors/nav/health Status for NAV arbeidsmarked-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nav/jobs": {
      "get": {
        "tags": [
          "connector:nav"
        ],
        "operationId": "get_api_connectors_nav_jobs",
        "summary": "GET /api/connectors/nav/jobs?periode=&omrade= data.nav.no/arbeidsmarked/v1/ledige-stillinger er suns",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav/jobs/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/nav/unemployment": {
      "get": {
        "tags": [
          "connector:nav"
        ],
        "operationId": "get_api_connectors_nav_unemployment",
        "summary": "GET /api/connectors/nav/unemployment?months=N[&municipality=NNNN][&region=NO1] Norsk arbeidsledighet",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nav/unemployment/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nb-dhlab/health": {
      "get": {
        "tags": [
          "connector:nb-dhlab"
        ],
        "operationId": "get_api_connectors_nb_dhlab_health",
        "summary": "GET /api/connectors/nb-dhlab/health Default: statisk metadata via `nbDhLabHealth()`.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nb-dhlab/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nb-dhlab/search": {
      "get": {
        "tags": [
          "connector:nb-dhlab"
        ],
        "operationId": "get_api_connectors_nb_dhlab_search",
        "summary": "GET /api/connectors/nb-dhlab/search?q=ibsen&size=10&page=0 Søk i Nasjonalbibliotekets katalog (kombi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nb-dhlab/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNbDhlabSearch",
                  "additionalProperties": false,
                  "description": "Katalogsøk i Nasjonalbibliotekets DH-lab: verk med tittel, opphavspersoner, språk, medietype og lenker.",
                  "required": [
                    "source",
                    "query",
                    "page",
                    "size",
                    "totalElements",
                    "totalPages",
                    "count",
                    "items"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "nb-dhlab"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "example": "ibsen"
                    },
                    "page": {
                      "type": "integer",
                      "example": 0
                    },
                    "size": {
                      "type": "integer",
                      "example": 20
                    },
                    "totalElements": {
                      "type": "integer",
                      "example": 340
                    },
                    "totalPages": {
                      "type": "integer",
                      "example": 17
                    },
                    "count": {
                      "type": "integer",
                      "example": 20
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "source",
                          "upstreamId",
                          "title",
                          "creators",
                          "languages",
                          "mediaTypes",
                          "issued",
                          "selfUrl",
                          "presentationUrl"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "nb-dhlab:URN:NBN:no-nb_digibok_123"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "nb-dhlab"
                            ]
                          },
                          "upstreamId": {
                            "type": "string",
                            "example": "URN:NBN:no-nb_digibok_123"
                          },
                          "title": {
                            "type": "string",
                            "example": "Et dukkehjem"
                          },
                          "creators": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "Ibsen, Henrik"
                            ]
                          },
                          "languages": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "nob"
                            ]
                          },
                          "mediaTypes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "Bok"
                            ]
                          },
                          "issued": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1879"
                          },
                          "selfUrl": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://api.nb.no/catalog/v1/items/123"
                          },
                          "presentationUrl": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://www.nb.no/items/123"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "nb-dhlab",
                    "query": "ibsen",
                    "page": 0,
                    "size": 20,
                    "totalElements": 340,
                    "totalPages": 17,
                    "count": 1,
                    "items": [
                      {
                        "id": "nb-dhlab:URN:NBN:no-nb_digibok_123",
                        "source": "nb-dhlab",
                        "upstreamId": "URN:NBN:no-nb_digibok_123",
                        "title": "Et dukkehjem",
                        "creators": [
                          "Ibsen, Henrik"
                        ],
                        "languages": [
                          "nob"
                        ],
                        "mediaTypes": [
                          "Bok"
                        ],
                        "issued": "1879",
                        "selfUrl": "https://api.nb.no/catalog/v1/items/123",
                        "presentationUrl": "https://www.nb.no/items/123"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng i Nasjonalbibliotekets katalog",
            "example": "Ibsen"
          }
        ]
      }
    },
    "/api/connectors/ngu/boreholes": {
      "get": {
        "tags": [
          "connector:ngu"
        ],
        "operationId": "get_api_connectors_ngu_boreholes",
        "summary": "GET /api/connectors/ngu/boreholes?municipality=0301 (#2816) Henter geotekniske borehull fra NGU NADA",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ngu/boreholes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "county",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fylkesnummer",
            "example": "03"
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (med lon)",
            "example": "59.91"
          },
          {
            "name": "lon",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (med lat)",
            "example": "10.75"
          },
          {
            "name": "municipality",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Kommunenummer. Minst én av municipality/county/(lat&lon)",
            "example": "0301"
          }
        ]
      }
    },
    "/api/connectors/ngu/groundwater": {
      "get": {
        "tags": [
          "connector:ngu"
        ],
        "operationId": "get_api_connectors_ngu_groundwater",
        "summary": "GET /api/connectors/ngu/groundwater?municipality=0301 Henter grunnvannsbrønner fra NGU NADAG (Nasjon",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ngu/groundwater/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "county",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fylkesnummer",
            "example": "03"
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (med lon)",
            "example": "59.91"
          },
          {
            "name": "lon",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (med lat)",
            "example": "10.75"
          },
          {
            "name": "municipality",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Kommunenummer (4 siffer). Minst én av municipality/county/(lat&lon)",
            "example": "0301"
          }
        ]
      }
    },
    "/api/connectors/ngu/health": {
      "get": {
        "tags": [
          "connector:ngu"
        ],
        "operationId": "get_api_connectors_ngu_health",
        "summary": "GET /api/connectors/ngu/health Deep probe for NGU NADAG (#2734, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ngu/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ngu/minerals": {
      "get": {
        "tags": [
          "connector:ngu"
        ],
        "operationId": "get_api_connectors_ngu_minerals",
        "summary": "GET /api/connectors/ngu/minerals?bbox=lat1,lon1,lat2,lon2 (#2816) Mineralforekomster fra NGU MinNo (",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ngu/minerals/route.ts",
        "responses": {
          "501": {
            "description": "Ruten finnes, men kapabiliteten er ikke bygget ennå (#4134) — typisk fordi kilden er WFS/WMS/bulk-ingest, ikke REST. Returnerer strukturert JSON med `code: not_implemented` og en `reason` som bevarer connector-spesifikk kontekst. Ikke en kjørefeil, og retry hjelper ikke — se `x-implementation: planned`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "not_implemented",
        "x-implementation": "planned"
      }
    },
    "/api/connectors/nibio/agriculture": {
      "get": {
        "tags": [
          "connector:nibio"
        ],
        "operationId": "get_api_connectors_nibio_agriculture",
        "summary": "GET /api/connectors/nibio/agriculture?municipality=0301&year=2023 Henter jordbruksstatistikk fra NIB",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nibio/agriculture/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nibio/arealressurser": {
      "get": {
        "tags": [
          "connector:nibio"
        ],
        "operationId": "get_api_connectors_nibio_arealressurser",
        "summary": "GET /api/connectors/nibio/arealressurser?municipality=0301 (#2816) Canonical norsk alias for `/api/c",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nibio/arealressurser/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nibio/forest": {
      "get": {
        "tags": [
          "connector:nibio"
        ],
        "operationId": "get_api_connectors_nibio_forest",
        "summary": "GET /api/connectors/nibio/forest?municipality=0301 (#2816) Skogressursdata fra NIBIO (Landsskogtakse",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nibio/forest/route.ts",
        "responses": {
          "501": {
            "description": "Ruten finnes, men kapabiliteten er ikke bygget ennå (#4134) — typisk fordi kilden er WFS/WMS/bulk-ingest, ikke REST. Returnerer strukturert JSON med `code: not_implemented` og en `reason` som bevarer connector-spesifikk kontekst. Ikke en kjørefeil, og retry hjelper ikke — se `x-implementation: planned`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "not_implemented",
        "x-implementation": "planned"
      }
    },
    "/api/connectors/nibio/health": {
      "get": {
        "tags": [
          "connector:nibio"
        ],
        "operationId": "get_api_connectors_nibio_health",
        "summary": "GET /api/connectors/nibio/health Smoke-endepunkt for NIBIO-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nibio/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nibio/land-use": {
      "get": {
        "tags": [
          "connector:nibio"
        ],
        "operationId": "get_api_connectors_nibio_land_use",
        "summary": "GET /api/connectors/nibio/land-use?municipality=1201&areaType=J Henter arealressursdata (AR5) fra NI",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nibio/land-use/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nilu/aqi": {
      "get": {
        "tags": [
          "connector:nilu"
        ],
        "operationId": "get_api_connectors_nilu_aqi",
        "summary": "GET /api/connectors/nilu/aqi?areas=&components=  (#2823) Klassifiserer siste time-målinger til norsk",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nilu/aqi/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "areas",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert områdefilter (bynavn, f.eks. Oslo,Bergen)",
            "example": "Oslo"
          },
          {
            "name": "components",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert komponentfilter (PM10,PM2.5,NO2,O3,SO2)",
            "example": "PM10,NO2"
          }
        ]
      }
    },
    "/api/connectors/nilu/health": {
      "get": {
        "tags": [
          "connector:nilu"
        ],
        "operationId": "get_api_connectors_nilu_health",
        "summary": "GET /api/connectors/nilu/health Smoke-endepunkt for NILU-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nilu/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nilu/measurements": {
      "get": {
        "tags": [
          "connector:nilu"
        ],
        "operationId": "get_api_connectors_nilu_measurements",
        "summary": "GET /api/connectors/nilu/measurements?stations=&areas=&components= Siste time-målinger fra NILU.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nilu/measurements/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "areas",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert områdefilter (bynavn)",
            "example": "Oslo"
          },
          {
            "name": "components",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert komponentfilter (PM10,PM2.5,NO2,O3,SO2)",
            "example": "PM10"
          },
          {
            "name": "stations",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert stasjonsfilter",
            "example": "Kirkeveien"
          }
        ]
      }
    },
    "/api/connectors/nilu/stations": {
      "get": {
        "tags": [
          "connector:nilu"
        ],
        "operationId": "get_api_connectors_nilu_stations",
        "summary": "GET /api/connectors/nilu/stations?areas=&components=  (#2823) Returnerer NILU-stasjoner som rapporte",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nilu/stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorLuftkvalitetStations",
                  "additionalProperties": false,
                  "description": "Norske luftkvalitets-målestasjoner (metadata, uten måleverdier): posisjon, kommune/fylke, stasjonstype og hvilke komponenter som måles.",
                  "required": [
                    "stations",
                    "total"
                  ],
                  "properties": {
                    "stations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "kommune",
                          "fylke",
                          "lat",
                          "lon",
                          "stasjonsType",
                          "komponenter"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "NO0001A"
                          },
                          "navn": {
                            "type": "string",
                            "example": "Kirkeveien"
                          },
                          "kommune": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "fylke": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "lat": {
                            "type": "number",
                            "example": 59.9333
                          },
                          "lon": {
                            "type": "number",
                            "example": 10.7167
                          },
                          "stasjonsType": {
                            "type": "string",
                            "enum": [
                              "trafikk",
                              "bakgrunn",
                              "industri"
                            ]
                          },
                          "komponenter": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "PM10",
                                "PM2.5",
                                "NO2",
                                "O3",
                                "SO2"
                              ]
                            },
                            "example": [
                              "PM10",
                              "NO2"
                            ]
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "example": 42
                    }
                  },
                  "example": {
                    "stations": [
                      {
                        "id": "NO0001A",
                        "navn": "Kirkeveien",
                        "kommune": "Oslo",
                        "fylke": "Oslo",
                        "lat": 59.9333,
                        "lon": 10.7167,
                        "stasjonsType": "trafikk",
                        "komponenter": [
                          "PM10",
                          "NO2"
                        ]
                      }
                    ],
                    "total": 1
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "areas",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert områdefilter (bynavn)",
            "example": "Oslo"
          },
          {
            "name": "components",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert komponentfilter (PM10,PM2.5,NO2,O3,SO2)",
            "example": "NO2"
          }
        ]
      }
    },
    "/api/connectors/nkom/coverage": {
      "get": {
        "tags": [
          "connector:nkom"
        ],
        "operationId": "get_api_connectors_nkom_coverage",
        "summary": "GET /api/connectors/nkom/coverage?municipality=0301&technology=4G Henter mobildekning og bredbåndsde",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nkom/coverage/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nkom/health": {
      "get": {
        "tags": [
          "connector:nkom"
        ],
        "operationId": "get_api_connectors_nkom_health",
        "summary": "GET /api/connectors/nkom/health Default: statisk metadata (#883).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nkom/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nkom/statistics": {
      "get": {
        "tags": [
          "connector:nkom"
        ],
        "operationId": "get_api_connectors_nkom_statistics",
        "summary": "GET /api/connectors/nkom/statistics?year=2023&indicator=mobile_subscriptions Henter ekomstatistikk f",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nkom/statistics/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/no-artskart/health": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_health",
        "summary": "GET /api/connectors/no-artskart/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/no-artskart/observations": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_observations",
        "summary": "GET /api/connectors/no-artskart/observations",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/observations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorNoArtskartObservations",
                  "description": "Liste over artsobservasjoner fra Artskart: takson, sted (koordinat + kommune/ fylke), tidspunkt og datasett-provenans.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "taxonId",
                      "scientificName",
                      "norwegianName",
                      "observedAt",
                      "observationYear",
                      "latitude",
                      "longitude",
                      "municipality",
                      "county",
                      "datasetId",
                      "datasetName",
                      "dataProvider",
                      "abundance",
                      "source",
                      "retrievedAt"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "example": "obs_123456"
                      },
                      "taxonId": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "40631"
                      },
                      "scientificName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Ursus maritimus"
                      },
                      "norwegianName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "isbjørn"
                      },
                      "observedAt": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "2024-03-15"
                      },
                      "observationYear": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 2024
                      },
                      "latitude": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 78.22
                      },
                      "longitude": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 15.65
                      },
                      "municipality": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Svalbard"
                      },
                      "county": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Svalbard"
                      },
                      "datasetId": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "datasetName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Norsk Polarinstitutt"
                      },
                      "dataProvider": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Norsk Polarinstitutt"
                      },
                      "abundance": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 2
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "no-artskart"
                        ]
                      },
                      "retrievedAt": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-07-03T09:15:00.000Z"
                      }
                    }
                  },
                  "example": [
                    {
                      "id": "obs_123456",
                      "taxonId": "40631",
                      "scientificName": "Ursus maritimus",
                      "norwegianName": "isbjørn",
                      "observedAt": "2024-03-15",
                      "observationYear": 2024,
                      "latitude": 78.22,
                      "longitude": 15.65,
                      "municipality": "Svalbard",
                      "county": "Svalbard",
                      "datasetId": "ds-1",
                      "datasetName": "Norsk Polarinstitutt",
                      "dataProvider": "Norsk Polarinstitutt",
                      "abundance": 2,
                      "source": "no-artskart",
                      "retrievedAt": "2026-07-03T09:15:00.000Z"
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/no-artskart/property-check": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_property_check",
        "summary": "GET /api/connectors/no-artskart/property-check",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/property-check/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.91"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Maks antall treff",
            "example": "50"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.75"
          },
          {
            "name": "radius",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "500"
            },
            "description": "Søkeradius i meter"
          }
        ]
      }
    },
    "/api/connectors/no-artskart/redlist": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_redlist",
        "summary": "GET /api/connectors/no-artskart/redlist",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/redlist/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/no-artskart/sources": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_sources",
        "summary": "GET /api/connectors/no-artskart/sources",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/sources/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/no-artskart/taxon": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_taxon",
        "summary": "GET /api/connectors/no-artskart/taxon",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/taxon/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Tekstsøk (enten q eller taxonId)",
            "example": "vipe"
          },
          {
            "name": "taxonId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Takson-ID",
            "example": "4080"
          }
        ]
      }
    },
    "/api/connectors/no-artskart/taxon/{taxonId}": {
      "get": {
        "tags": [
          "connector:no-artskart"
        ],
        "operationId": "get_api_connectors_no_artskart_taxon__taxonId_",
        "summary": "GET /api/connectors/no-artskart/taxon/{taxonId}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/no-artskart/taxon/[taxonId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNoArtskartTaxon",
                  "additionalProperties": false,
                  "description": "Ett normalisert takson fra Artsdatabankens Artskart, slått opp på takson-id. Vitenskapelig/norsk/engelsk navn + full taksonomisk hierarki (rike → slekt).",
                  "required": [
                    "id",
                    "source",
                    "retrievedAt"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Takson-id (kanonisk, fra Artskart).",
                      "example": "40631"
                    },
                    "scientificName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ursus maritimus"
                    },
                    "norwegianName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "isbjørn"
                    },
                    "englishName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Polar bear"
                    },
                    "kingdom": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Animalia"
                    },
                    "phylum": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Chordata"
                    },
                    "class_": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Taksonomisk klasse (serialisert som `class_`).",
                      "example": "Mammalia"
                    },
                    "order": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Carnivora"
                    },
                    "family": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ursidae"
                    },
                    "genus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ursus"
                    },
                    "taxonRank": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Art"
                    },
                    "taxonStatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Gyldig"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "no-artskart"
                      ]
                    },
                    "retrievedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "id": "40631",
                    "scientificName": "Ursus maritimus",
                    "norwegianName": "isbjørn",
                    "englishName": "Polar bear",
                    "kingdom": "Animalia",
                    "phylum": "Chordata",
                    "class_": "Mammalia",
                    "order": "Carnivora",
                    "family": "Ursidae",
                    "genus": "Ursus",
                    "taxonRank": "Art",
                    "taxonStatus": "Gyldig",
                    "source": "no-artskart",
                    "retrievedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "taxonId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `taxonId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nominatim/geocode": {
      "get": {
        "tags": [
          "connector:nominatim"
        ],
        "operationId": "get_api_connectors_nominatim_geocode",
        "summary": "GET /api/connectors/nominatim/geocode Strukturert geokoding mot Nominatim.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nominatim/geocode/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "By",
            "example": "Oslo"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Land",
            "example": "Norway"
          },
          {
            "name": "county",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fylke",
            "example": "Oslo"
          },
          {
            "name": "postalcode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Postnummer",
            "example": "0154"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Region/stat",
            "example": "Oslo"
          },
          {
            "name": "street",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Gate (minst ett av street/city/county/state/country/postalcode)",
            "example": "Karl Johans gate 1"
          }
        ]
      }
    },
    "/api/connectors/nominatim/health": {
      "get": {
        "tags": [
          "connector:nominatim"
        ],
        "operationId": "get_api_connectors_nominatim_health",
        "summary": "GET /api/connectors/nominatim/health Default: statisk status.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nominatim/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nominatim/lookup": {
      "get": {
        "tags": [
          "connector:nominatim"
        ],
        "operationId": "get_api_connectors_nominatim_lookup",
        "summary": "GET /api/connectors/nominatim/lookup Oppslag på OSM-ID-er mot Nominatim.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nominatim/lookup/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "osm_ids",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[NWR]\\d+(,[NWR]\\d+){0,49}$"
            },
            "description": "Kommaseparert liste OSM-IDer (N/W/R-prefiks)",
            "example": "R2978650"
          }
        ]
      }
    },
    "/api/connectors/nominatim/reverse": {
      "get": {
        "tags": [
          "connector:nominatim"
        ],
        "operationId": "get_api_connectors_nominatim_reverse",
        "summary": "GET /api/connectors/nominatim/reverse Omvendt geokoding (koordinat → adresse) mot Nominatim.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nominatim/reverse/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.913"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "10.752"
          }
        ]
      }
    },
    "/api/connectors/nominatim/search": {
      "get": {
        "tags": [
          "connector:nominatim"
        ],
        "operationId": "get_api_connectors_nominatim_search",
        "summary": "GET /api/connectors/nominatim/search Fri-form adresse-/stedsøk mot Nominatim (OpenStreetMap).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nominatim/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNominatimSearch",
                  "additionalProperties": false,
                  "description": "Treffliste fra Nominatim (OpenStreetMap) fri-form adresse-/stedsøk.",
                  "required": [
                    "source",
                    "resultCount",
                    "results"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "nominatim"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "nominatim"
                    },
                    "resultCount": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall treff i `results` (= `results.length`).",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "description": "Geokodede steder (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Ett kanonisk sted (`CanonicalPlace`). Alle felt er alltid til stede; ukjente verdier er `null`.",
                        "required": [
                          "placeId",
                          "osmType",
                          "osmId",
                          "lat",
                          "lon",
                          "displayName",
                          "name",
                          "category",
                          "type",
                          "importance",
                          "boundingBox",
                          "address"
                        ],
                        "properties": {
                          "placeId": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "description": "Nominatims interne sted-ID, eller `null`.",
                            "example": 123456
                          },
                          "osmType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "OSM-objekttype (`node`/`way`/`relation`), eller `null`.",
                            "example": "way"
                          },
                          "osmId": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "description": "OSM-objekt-ID, eller `null`.",
                            "example": 987654321
                          },
                          "lat": {
                            "type": "number",
                            "minimum": -90,
                            "maximum": 90,
                            "description": "Breddegrad (WGS84). 0 hvis upstream manglet verdi.",
                            "example": 59.9138688
                          },
                          "lon": {
                            "type": "number",
                            "minimum": -180,
                            "maximum": 180,
                            "description": "Lengdegrad (WGS84). 0 hvis upstream manglet verdi.",
                            "example": 10.7522454
                          },
                          "displayName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Sammensatt visningsnavn fra Nominatim, eller `null`.",
                            "example": "Storgata 1, Sentrum, Oslo, 0155, Norge"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Primærnavn på stedet/POI, eller `null`.",
                            "example": "Storgata"
                          },
                          "category": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "OSM-kategori (`category`, faller tilbake på `class`), eller `null`.",
                            "example": "highway"
                          },
                          "type": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "OSM-undertype innenfor kategorien, eller `null`.",
                            "example": "residential"
                          },
                          "importance": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Nominatims relevans-/viktighetsscore (0–1), eller `null`.",
                            "example": 0.42
                          },
                          "boundingBox": {
                            "type": [
                              "array",
                              "null"
                            ],
                            "description": "Avgrensningsboks `[minLat, maxLat, minLon, maxLon]`, eller `null` hvis upstream ikke ga fire gyldige tall.",
                            "minItems": 4,
                            "maxItems": 4,
                            "items": {
                              "type": "number"
                            },
                            "example": [
                              59.913,
                              59.9145,
                              10.751,
                              10.7535
                            ]
                          },
                          "address": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Strukturert adresse (`CanonicalAddress`). Alle felt alltid til stede; ukjente verdier er `null`.",
                            "required": [
                              "houseNumber",
                              "road",
                              "suburb",
                              "city",
                              "municipality",
                              "county",
                              "state",
                              "postcode",
                              "country",
                              "countryCode"
                            ],
                            "properties": {
                              "houseNumber": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "1"
                              },
                              "road": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Storgata"
                              },
                              "suburb": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Bydel/nabolag (`suburb`, faller tilbake på `neighbourhood`).",
                                "example": "Sentrum"
                              },
                              "city": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "By/tettsted (`city`/`town`/`village`).",
                                "example": "Oslo"
                              },
                              "municipality": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Oslo"
                              },
                              "county": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Oslo"
                              },
                              "state": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Oslo"
                              },
                              "postcode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "0155"
                              },
                              "country": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Norge"
                              },
                              "countryCode": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "ISO-3166-1 alpha-2, små bokstaver.",
                                "example": "no"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "nominatim",
                    "resultCount": 1,
                    "results": [
                      {
                        "placeId": 123456,
                        "osmType": "way",
                        "osmId": 987654321,
                        "lat": 59.9138688,
                        "lon": 10.7522454,
                        "displayName": "Storgata 1, Sentrum, Oslo, 0155, Norge",
                        "name": "Storgata",
                        "category": "highway",
                        "type": "residential",
                        "importance": 0.42,
                        "boundingBox": [
                          59.913,
                          59.9145,
                          10.751,
                          10.7535
                        ],
                        "address": {
                          "houseNumber": "1",
                          "road": "Storgata",
                          "suburb": "Sentrum",
                          "city": "Oslo",
                          "municipality": "Oslo",
                          "county": "Oslo",
                          "state": "Oslo",
                          "postcode": "0155",
                          "country": "Norge",
                          "countryCode": "no"
                        }
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fritekst-adressesøk",
            "example": "Karl Johans gate, Oslo"
          }
        ]
      }
    },
    "/api/connectors/nord-pool/current": {
      "get": {
        "tags": [
          "connector:nord-pool"
        ],
        "operationId": "get_api_connectors_nord_pool_current",
        "summary": "GET /api/connectors/nord-pool/current Gjeldende time-pris for ett prisområde fra Nord Pool (#1233).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nord-pool/current/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "NO1"
            },
            "description": "Ett prisområde (NO1–5, SE1–4, DK1–2, FI, …)",
            "example": "NO1"
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NOK",
                "EUR",
                "DKK",
                "SEK"
              ],
              "default": "NOK"
            },
            "description": "Valuta for prisen",
            "example": "NOK"
          }
        ]
      }
    },
    "/api/connectors/nord-pool/day-ahead": {
      "get": {
        "tags": [
          "connector:nord-pool"
        ],
        "operationId": "get_api_connectors_nord_pool_day_ahead",
        "summary": "GET /api/connectors/nord-pool/day-ahead Day-ahead spotpriser per time fra Nord Pool (#1233).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nord-pool/day-ahead/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "areas",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "NO1,NO2,NO3,NO4,NO5"
            },
            "description": "Kommaseparert liste av prisområder (NO1–5, SE1–4, DK1–2, FI, …)",
            "example": "NO1,NO2"
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NOK",
                "EUR",
                "DKK",
                "SEK"
              ],
              "default": "NOK"
            },
            "description": "Valuta for prisene",
            "example": "NOK"
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Leveringsdato (YYYY-MM-DD). Default: i dag.",
            "example": "2026-05-21"
          }
        ]
      }
    },
    "/api/connectors/nord-pool/health": {
      "get": {
        "tags": [
          "connector:nord-pool"
        ],
        "operationId": "get_api_connectors_nord_pool_health",
        "summary": "GET /api/connectors/nord-pool/health Default: statisk helsestatus for Nord Pool connector (#1233).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nord-pool/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/norges-bank/exchange-rates": {
      "get": {
        "tags": [
          "connector:norges-bank"
        ],
        "operationId": "get_api_connectors_norges_bank_exchange_rates",
        "summary": "GET /api/connectors/norges-bank/exchange-rates",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norges-bank/exchange-rates/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/norges-bank/health": {
      "get": {
        "tags": [
          "connector:norges-bank"
        ],
        "operationId": "get_api_connectors_norges_bank_health",
        "summary": "GET /api/connectors/norges-bank/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norges-bank/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/norges-bank/key-rate": {
      "get": {
        "tags": [
          "connector:norges-bank"
        ],
        "operationId": "get_api_connectors_norges_bank_key_rate",
        "summary": "GET /api/connectors/norges-bank/key-rate",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norges-bank/key-rate/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/norges-bank/nibor": {
      "get": {
        "tags": [
          "connector:norges-bank"
        ],
        "operationId": "get_api_connectors_norges_bank_nibor",
        "summary": "GET /api/connectors/norges-bank/nibor",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norges-bank/nibor/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/norske-utslipp/air": {
      "get": {
        "tags": [
          "connector:norske-utslipp"
        ],
        "operationId": "get_api_connectors_norske_utslipp_air",
        "summary": "GET /api/connectors/norske-utslipp/air?facilityId=...&yearFrom=...&yearTo=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norske-utslipp/air/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "facilityId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Anleggs-ID",
            "example": "12345"
          },
          {
            "name": "yearFrom",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "pattern": "^\\d{4}$"
            },
            "description": "Fra-årstall (1990–2100)",
            "example": "2020"
          },
          {
            "name": "yearTo",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "pattern": "^\\d{4}$"
            },
            "description": "Til-årstall (≥ yearFrom, ≤ 2100)",
            "example": "2022"
          }
        ]
      }
    },
    "/api/connectors/norske-utslipp/facilities": {
      "get": {
        "tags": [
          "connector:norske-utslipp"
        ],
        "operationId": "get_api_connectors_norske_utslipp_facilities",
        "summary": "GET /api/connectors/norske-utslipp/facilities Norske utslipp (Miljødirektoratet) — anleggsregister (",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norske-utslipp/facilities/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/norske-utslipp/health": {
      "get": {
        "tags": [
          "connector:norske-utslipp"
        ],
        "operationId": "get_api_connectors_norske_utslipp_health",
        "summary": "GET /api/connectors/norske-utslipp/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norske-utslipp/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/norske-utslipp/search": {
      "get": {
        "tags": [
          "connector:norske-utslipp"
        ],
        "operationId": "get_api_connectors_norske_utslipp_search",
        "summary": "GET /api/connectors/norske-utslipp/search?orgnr=...|query=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norske-utslipp/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (enten orgnr eller query)",
            "example": "923609016"
          },
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk",
            "example": "Equinor"
          }
        ]
      }
    },
    "/api/connectors/norske-utslipp/water": {
      "get": {
        "tags": [
          "connector:norske-utslipp"
        ],
        "operationId": "get_api_connectors_norske_utslipp_water",
        "summary": "GET /api/connectors/norske-utslipp/water?facilityId=...&yearFrom=...&yearTo=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/norske-utslipp/water/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "facilityId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Anleggs-ID",
            "example": "12345"
          },
          {
            "name": "yearFrom",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "pattern": "^\\d{4}$"
            },
            "description": "Fra-årstall (1990–2100)",
            "example": "2020"
          },
          {
            "name": "yearTo",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "pattern": "^\\d{4}$"
            },
            "description": "Til-årstall (≥ yearFrom, ≤ 2100)",
            "example": "2022"
          }
        ]
      }
    },
    "/api/connectors/npr/health": {
      "get": {
        "tags": [
          "connector:npr"
        ],
        "operationId": "get_api_connectors_npr_health",
        "summary": "GET /api/connectors/npr/health (#2392) Status for NPR/SAMDATA-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/npr/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/npr/hospitals": {
      "get": {
        "tags": [
          "connector:npr"
        ],
        "operationId": "get_api_connectors_npr_hospitals",
        "summary": "GET /api/connectors/npr/hospitals?healthTrust=&year=&limit= (#2392) Aggregert SAMDATA spesialisthels",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/npr/hospitals/route.ts",
        "responses": {
          "501": {
            "description": "Ruten finnes, men kapabiliteten er ikke bygget ennå (#4134) — typisk fordi kilden er WFS/WMS/bulk-ingest, ikke REST. Returnerer strukturert JSON med `code: not_implemented` og en `reason` som bevarer connector-spesifikk kontekst. Ikke en kjørefeil, og retry hjelper ikke — se `x-implementation: planned`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "not_implemented",
        "x-implementation": "planned"
      }
    },
    "/api/connectors/npr/quality-indicators": {
      "get": {
        "tags": [
          "connector:npr"
        ],
        "operationId": "get_api_connectors_npr_quality_indicators",
        "summary": "GET /api/connectors/npr/quality-indicators?indicator=&unit=&period= (#2392) NPR nasjonale kvalitetsi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/npr/quality-indicators/route.ts",
        "responses": {
          "501": {
            "description": "Ruten finnes, men kapabiliteten er ikke bygget ennå (#4134) — typisk fordi kilden er WFS/WMS/bulk-ingest, ikke REST. Returnerer strukturert JSON med `code: not_implemented` og en `reason` som bevarer connector-spesifikk kontekst. Ikke en kjørefeil, og retry hjelper ikke — se `x-implementation: planned`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "not_implemented",
        "x-implementation": "planned"
      }
    },
    "/api/connectors/npr/waiting-times": {
      "get": {
        "tags": [
          "connector:npr"
        ],
        "operationId": "get_api_connectors_npr_waiting_times",
        "summary": "GET /api/connectors/npr/waiting-times?unit=&specialty=&period= (#2392) Ventetider og fristbrudd per ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/npr/waiting-times/route.ts",
        "responses": {
          "501": {
            "description": "Ruten finnes, men kapabiliteten er ikke bygget ennå (#4134) — typisk fordi kilden er WFS/WMS/bulk-ingest, ikke REST. Returnerer strukturert JSON med `code: not_implemented` og en `reason` som bevarer connector-spesifikk kontekst. Ikke en kjørefeil, og retry hjelper ikke — se `x-implementation: planned`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "not_implemented",
        "x-implementation": "planned"
      }
    },
    "/api/connectors/nsg/health": {
      "get": {
        "tags": [
          "connector:nsg"
        ],
        "operationId": "get_api_connectors_nsg_health",
        "summary": "GET /api/connectors/nsg/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nsg/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nsg/lookup": {
      "get": {
        "tags": [
          "connector:nsg"
        ],
        "operationId": "get_api_connectors_nsg_lookup",
        "summary": "GET /api/connectors/nsg/lookup",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nsg/lookup/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nvdb/health": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_health",
        "summary": "GET /api/connectors/nvdb/health Deep probe for NVDB (#2729, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nvdb/objekttyper": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_objekttyper",
        "summary": "GET /api/connectors/nvdb/objekttyper Returnerer alle 424 vegobjekttyper fra NVDB datakatalog.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/objekttyper/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nvdb/objekttyper/{id}": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_objekttyper__id_",
        "summary": "GET /api/connectors/nvdb/objekttyper/[id] Returnerer detaljer og egenskapstyper for én vegobjekttype",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/objekttyper/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNvdbObjekttype",
                  "additionalProperties": false,
                  "description": "Én normalisert objekttype fra NVDB-datakatalogen, slått opp på type-id. Inkluderer kategorier og — for by-id-oppslaget — de tilhørende egenskapstypene (attributt-definisjonene).",
                  "required": [
                    "id",
                    "navn",
                    "kategorier",
                    "antallEgenskapstyper"
                  ],
                  "properties": {
                    "id": {
                      "type": "integer",
                      "example": 581
                    },
                    "navn": {
                      "type": "string",
                      "example": "Tunnelløp"
                    },
                    "beskrivelse": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sosinavn": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "kategorier": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Katalog-kategorier objekttypen tilhører.",
                      "example": [
                        "Vegobjekter"
                      ]
                    },
                    "antallEgenskapstyper": {
                      "type": "integer",
                      "example": 42
                    },
                    "egenskapstyper": {
                      "type": "array",
                      "description": "Attributt-definisjonene for objekttypen. Inkludert i by-id-oppslaget (detalj-flagget); utelatt i liste-varianten.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "obligatorisk"
                        ],
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 5530
                          },
                          "navn": {
                            "type": "string",
                            "example": "Lengde"
                          },
                          "beskrivelse": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "datatype": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Tall"
                          },
                          "obligatorisk": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": 581,
                    "navn": "Tunnelløp",
                    "beskrivelse": "Et gjennomgående løp i en tunnel.",
                    "sosinavn": null,
                    "kategorier": [
                      "Vegobjekter"
                    ],
                    "antallEgenskapstyper": 2,
                    "egenskapstyper": [
                      {
                        "id": 5530,
                        "navn": "Lengde",
                        "beskrivelse": "Tunnelløpets lengde i meter.",
                        "datatype": "Tall",
                        "obligatorisk": true
                      },
                      {
                        "id": 5531,
                        "navn": "Navn",
                        "beskrivelse": null,
                        "datatype": "Tekst",
                        "obligatorisk": false
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nvdb/omrader/{type}": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_omrader__type_",
        "summary": "GET /api/connectors/nvdb/omrader/[type] Returnerer geografiske omrader fra NVDB.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/omrader/[type]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorNvdbOmrader",
                  "description": "Liste over NVDB-områder. `type=kommuner` → kommuner (med fylkes-referanse); `type=fylker` → fylker. Alle har `nummer` + `navn`.",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Kommune (returneres for `type=kommuner`).",
                        "required": [
                          "nummer",
                          "navn",
                          "fylke"
                        ],
                        "properties": {
                          "nummer": {
                            "type": "string",
                            "example": "0301"
                          },
                          "navn": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "fylke": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 3
                          }
                        }
                      },
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Fylke (returneres for `type=fylker`).",
                        "required": [
                          "nummer",
                          "navn"
                        ],
                        "properties": {
                          "nummer": {
                            "type": "string",
                            "example": "03"
                          },
                          "navn": {
                            "type": "string",
                            "example": "Oslo"
                          }
                        }
                      }
                    ]
                  },
                  "example": [
                    {
                      "nummer": "0301",
                      "navn": "Oslo",
                      "fylke": 3
                    },
                    {
                      "nummer": "1103",
                      "navn": "Stavanger",
                      "fylke": 11
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `type` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nvdb/vegnett": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_vegnett",
        "summary": "GET /api/connectors/nvdb/vegnett Query-params: start    (valgfri) — paging-cursor fra forrige side (",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/vegnett/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nvdb/vegobjekter": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_vegobjekter",
        "summary": "GET /api/connectors/nvdb/vegobjekter Query-params: typeId   (påkrevd) — NVDB objekttype-ID, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/vegobjekter/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "typeId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Vegobjekttype-ID (se /objekttyper)",
            "example": "581"
          }
        ]
      }
    },
    "/api/connectors/nvdb/vegobjekter/{typeId}/{objektId}": {
      "get": {
        "tags": [
          "connector:nvdb"
        ],
        "operationId": "get_api_connectors_nvdb_vegobjekter__typeId___objektId_",
        "summary": "GET /api/connectors/nvdb/vegobjekter/[typeId]/[objektId] Henter ett enkelt vegobjekt med full detalj",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nvdb/vegobjekter/[typeId]/[objektId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorNvdbVegobjekt",
                  "additionalProperties": false,
                  "description": "Ett vegobjekt fra NVDB, slått opp på objekttype + objekt-id. Geometri (WKT), egenskaper (attributter) og kommunetilknytning.",
                  "required": [
                    "id",
                    "typeId",
                    "typeNavn",
                    "geometriWkt",
                    "srid",
                    "egenskaper",
                    "kommuner",
                    "startdato",
                    "sistModifisert"
                  ],
                  "properties": {
                    "id": {
                      "type": "integer",
                      "example": 85288330
                    },
                    "typeId": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 581
                    },
                    "typeNavn": {
                      "type": "string",
                      "example": "Tunnelløp"
                    },
                    "geometriWkt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Geometri i Well-Known Text.",
                      "example": "LINESTRING (10.0 60.0, 10.1 60.1)"
                    },
                    "srid": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 5973
                    },
                    "egenskaper": {
                      "type": "array",
                      "description": "Attributter for vegobjektet. `verdi` er fri (bestemt av egenskapstypen).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "verdi"
                        ],
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 5530
                          },
                          "navn": {
                            "type": "string",
                            "example": "Lengde"
                          },
                          "verdi": {
                            "description": "Fri verdi (streng/tall/bool/objekt), bestemt av egenskapstypen."
                          }
                        }
                      }
                    },
                    "kommuner": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      },
                      "example": [
                        301
                      ]
                    },
                    "startdato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2015-06-01"
                    },
                    "sistModifisert": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2024-01-10"
                    }
                  },
                  "example": {
                    "id": 85288330,
                    "typeId": 581,
                    "typeNavn": "Tunnelløp",
                    "geometriWkt": "LINESTRING (10.0 60.0, 10.1 60.1)",
                    "srid": 5973,
                    "egenskaper": [
                      {
                        "id": 5530,
                        "navn": "Lengde",
                        "verdi": 1200
                      }
                    ],
                    "kommuner": [
                      301
                    ],
                    "startdato": "2015-06-01",
                    "sistModifisert": "2024-01-10"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `typeId` — se connector-dokumentasjon for format."
          },
          {
            "name": "objektId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `objektId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/nve/health": {
      "get": {
        "tags": [
          "connector:nve"
        ],
        "operationId": "get_api_connectors_nve_health",
        "summary": "GET /api/connectors/nve/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nve/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nve/observations": {
      "get": {
        "tags": [
          "connector:nve"
        ],
        "operationId": "get_api_connectors_nve_observations",
        "summary": "GET /api/connectors/nve/observations Query-params: stationId      (valgfri) — stasjon, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nve/observations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorNveObservations",
                  "description": "Tidsserier fra NVEs hydrologiske stasjoner: én serie per stasjon/parameter/ oppløsning med kvalitetskodede verdier.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "stationId",
                      "parameter",
                      "parameterName",
                      "unit",
                      "resolutionTime",
                      "observations"
                    ],
                    "properties": {
                      "stationId": {
                        "type": "string",
                        "example": "12.209.0"
                      },
                      "parameter": {
                        "type": "integer",
                        "example": 1001
                      },
                      "parameterName": {
                        "type": "string",
                        "example": "Vannføring"
                      },
                      "unit": {
                        "type": "string",
                        "example": "m³/s"
                      },
                      "resolutionTime": {
                        "type": "integer",
                        "description": "Tidsoppløsning (minutter).",
                        "example": 1440
                      },
                      "observations": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "time",
                            "value",
                            "quality"
                          ],
                          "properties": {
                            "time": {
                              "type": "string",
                              "example": "2026-07-02T00:00:00Z"
                            },
                            "value": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "example": 245.7
                            },
                            "quality": {
                              "type": "integer",
                              "description": "NVEs kvalitetskode.",
                              "example": 0
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": [
                    {
                      "stationId": "12.209.0",
                      "parameter": 1001,
                      "parameterName": "Vannføring",
                      "unit": "m³/s",
                      "resolutionTime": 1440,
                      "observations": [
                        {
                          "time": "2026-07-02T00:00:00Z",
                          "value": 245.7,
                          "quality": 0
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/nve/stations": {
      "get": {
        "tags": [
          "connector:nve"
        ],
        "operationId": "get_api_connectors_nve_stations",
        "summary": "GET /api/connectors/nve/stations Returnerer liste av NVE hydrologiske målestasjoner.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/nve/stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorNveStations",
                  "description": "Liste over NVEs hydrologiske målestasjoner med posisjon og tilgjengelige parameter-serier.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "stationId",
                      "stationName",
                      "latitude",
                      "longitude",
                      "masl",
                      "drainageBasinKey",
                      "parameters"
                    ],
                    "properties": {
                      "stationId": {
                        "type": "string",
                        "example": "12.209.0"
                      },
                      "stationName": {
                        "type": "string",
                        "example": "Glomma ved Langnes"
                      },
                      "latitude": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 59.5
                      },
                      "longitude": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 11.2
                      },
                      "masl": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Høyde over havet (m)."
                      },
                      "drainageBasinKey": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 2
                      },
                      "parameters": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "parameter",
                            "parameterName",
                            "unit",
                            "resolutions"
                          ],
                          "properties": {
                            "parameter": {
                              "type": "integer",
                              "example": 1001
                            },
                            "parameterName": {
                              "type": "string",
                              "example": "Vannføring"
                            },
                            "unit": {
                              "type": "string",
                              "example": "m³/s"
                            },
                            "resolutions": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "Tilgjengelige tidsoppløsninger (minutter).",
                              "example": [
                                60,
                                1440
                              ]
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": [
                    {
                      "stationId": "12.209.0",
                      "stationName": "Glomma ved Langnes",
                      "latitude": 59.5,
                      "longitude": 11.2,
                      "masl": 120,
                      "drainageBasinKey": 2,
                      "parameters": [
                        {
                          "parameter": 1001,
                          "parameterName": "Vannføring",
                          "unit": "m³/s",
                          "resolutions": [
                            60,
                            1440
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/oecd-data/data": {
      "get": {
        "tags": [
          "connector:oecd-data"
        ],
        "operationId": "get_api_connectors_oecd_data_data",
        "summary": "GET /api/connectors/oecd-data/data?dataflow=&agency=&version=&selection=&startPeriod=&endPeriod= (#1",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oecd-data/data/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "agency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.@]{1,50}$",
              "default": "OECD"
            },
            "description": "SDMX agency-ID som eier dataflow-en",
            "example": "OECD.SDD.NAD"
          },
          {
            "name": "dataflow",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_@-]{1,80}$"
            },
            "description": "OECD dataflow-ID (uten agency/versjon — angi agency separat)",
            "example": "DSD_NAMAIN1@DF_TABLE1_EXPENDITURE_INDIC"
          }
        ]
      }
    },
    "/api/connectors/oecd-data/dataflows": {
      "get": {
        "tags": [
          "connector:oecd-data"
        ],
        "operationId": "get_api_connectors_oecd_data_dataflows",
        "summary": "GET /api/connectors/oecd-data/dataflows?agency=OECD (#1212).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oecd-data/dataflows/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/oecd-data/gdp": {
      "get": {
        "tags": [
          "connector:oecd-data"
        ],
        "operationId": "get_api_connectors_oecd_data_gdp",
        "summary": "GET /api/connectors/oecd-data/gdp?countries=SWE,DNK&startPeriod=&endPeriod= (#1212).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oecd-data/gdp/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "countries",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert liste ISO-3 landkoder",
            "example": "NOR,SWE,DNK"
          }
        ]
      }
    },
    "/api/connectors/oecd-data/health": {
      "get": {
        "tags": [
          "connector:oecd-data"
        ],
        "operationId": "get_api_connectors_oecd_data_health",
        "summary": "GET /api/connectors/oecd-data/health (#1212).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oecd-data/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opencorporates/companies/search": {
      "get": {
        "tags": [
          "connector:opencorporates"
        ],
        "operationId": "get_api_connectors_opencorporates_companies_search",
        "summary": "GET /api/connectors/opencorporates/companies/search?q=&jurisdiction_code= (#1211).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opencorporates/companies/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOpencorporatesSearch",
                  "additionalProperties": false,
                  "description": "Paginert selskapssøk i OpenCorporates. Hver treff er et normalisert selskap med bransjekoder og kilde-provenans.",
                  "required": [
                    "companies",
                    "page",
                    "perPage",
                    "totalCount"
                  ],
                  "properties": {
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "companyNumber",
                          "jurisdiction",
                          "name",
                          "industryCodes",
                          "source"
                        ],
                        "properties": {
                          "companyNumber": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "923609016"
                          },
                          "jurisdiction": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "no"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "EQUINOR ASA"
                          },
                          "incorporationDate": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1972-07-01"
                          },
                          "dissolutionDate": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "companyType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Allmennaksjeselskap"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Active"
                          },
                          "registeredAddress": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Forusbeen 50, 4035 Stavanger"
                          },
                          "industryCodes": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "code",
                                "description"
                              ],
                              "properties": {
                                "code": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "06.100"
                                },
                                "description": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "Utvinning av råolje"
                                }
                              }
                            }
                          },
                          "source": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "properties": {
                              "publisher": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "url": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "retrievedAt": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          }
                        }
                      }
                    },
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "perPage": {
                      "type": "integer",
                      "example": 30
                    },
                    "totalCount": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 1
                    }
                  },
                  "example": {
                    "companies": [
                      {
                        "companyNumber": "923609016",
                        "jurisdiction": "no",
                        "name": "EQUINOR ASA",
                        "incorporationDate": "1972-07-01",
                        "dissolutionDate": null,
                        "companyType": "Allmennaksjeselskap",
                        "status": "Active",
                        "registeredAddress": "Forusbeen 50, 4035 Stavanger",
                        "industryCodes": [
                          {
                            "code": "06.100",
                            "description": "Utvinning av råolje"
                          }
                        ],
                        "source": {
                          "publisher": "Brønnøysund Register Centre",
                          "url": "https://opencorporates.com/companies/no/923609016",
                          "retrievedAt": "2026-07-03T09:15:00.000Z"
                        }
                      }
                    ],
                    "page": 1,
                    "perPage": 30,
                    "totalCount": 1
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opencorporates/companies/{jurisdiction}/{number}": {
      "get": {
        "tags": [
          "connector:opencorporates"
        ],
        "operationId": "get_api_connectors_opencorporates_companies__jurisdiction___number_",
        "summary": "GET /api/connectors/opencorporates/companies/[jurisdiction]/[number] (#1211).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opencorporates/companies/[jurisdiction]/[number]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOpencorporatesCompany",
                  "additionalProperties": false,
                  "description": "Ett normalisert selskap fra OpenCorporates, slått opp på jurisdiksjon + selskapsnummer. Kanonisk, flat form med bransjekoder og kilde-provenans.",
                  "required": [
                    "companyNumber",
                    "jurisdiction",
                    "name",
                    "industryCodes",
                    "source"
                  ],
                  "properties": {
                    "companyNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "923609016"
                    },
                    "jurisdiction": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "OpenCorporates jurisdiksjonskode.",
                      "example": "no"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "EQUINOR ASA"
                    },
                    "incorporationDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "1972-07-01"
                    },
                    "dissolutionDate": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "companyType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Allmennaksjeselskap"
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Active"
                    },
                    "registeredAddress": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Forusbeen 50, 4035 Stavanger, Norway"
                    },
                    "industryCodes": {
                      "type": "array",
                      "description": "Bransjekoder (kode + beskrivelse).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "code",
                          "description"
                        ],
                        "properties": {
                          "code": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "06.100"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Utvinning av råolje"
                          }
                        }
                      }
                    },
                    "source": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Kilde-provenans fra OpenCorporates. Null når ikke oppgitt.",
                      "properties": {
                        "publisher": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "Brønnøysund Register Centre"
                        },
                        "url": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "https://opencorporates.com/companies/no/923609016"
                        },
                        "retrievedAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "2026-07-03T09:15:00.000Z"
                        }
                      }
                    }
                  },
                  "example": {
                    "companyNumber": "923609016",
                    "jurisdiction": "no",
                    "name": "EQUINOR ASA",
                    "incorporationDate": "1972-07-01",
                    "dissolutionDate": null,
                    "companyType": "Allmennaksjeselskap",
                    "status": "Active",
                    "registeredAddress": "Forusbeen 50, 4035 Stavanger, Norway",
                    "industryCodes": [
                      {
                        "code": "06.100",
                        "description": "Utvinning av råolje"
                      }
                    ],
                    "source": {
                      "publisher": "Brønnøysund Register Centre",
                      "url": "https://opencorporates.com/companies/no/923609016",
                      "retrievedAt": "2026-07-03T09:15:00.000Z"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `jurisdiction` — se connector-dokumentasjon for format."
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `number` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/opencorporates/companies/{jurisdiction}/{number}/{sub}": {
      "get": {
        "tags": [
          "connector:opencorporates"
        ],
        "operationId": "get_api_connectors_opencorporates_companies__jurisdiction___number___sub_",
        "summary": "GET /api/connectors/opencorporates/companies/[jurisdiction]/[number]/[sub] (#1211).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opencorporates/companies/[jurisdiction]/[number]/[sub]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOpencorporatesSubresource",
                  "additionalProperties": false,
                  "description": "En subressurs (officers/filings/network) for et OpenCorporates-selskap. `results` er den rå upstream-nyttelasten, ikke normalisert av KETL.",
                  "required": [
                    "jurisdiction",
                    "number",
                    "subresource",
                    "results"
                  ],
                  "properties": {
                    "jurisdiction": {
                      "type": "string",
                      "description": "Normalisert/validert jurisdiksjonskode.",
                      "example": "no"
                    },
                    "number": {
                      "type": "string",
                      "description": "Normalisert/validert selskapsnummer.",
                      "example": "923609016"
                    },
                    "subresource": {
                      "type": "string",
                      "enum": [
                        "officers",
                        "filings",
                        "network"
                      ]
                    },
                    "results": {
                      "description": "Rå upstream `value.results` videresendt verbatim (vilkårlig JSON), eller null når upstream ikke returnerte noen. Ikke normalisert av KETL.",
                      "type": [
                        "object",
                        "array",
                        "null"
                      ]
                    }
                  },
                  "example": {
                    "jurisdiction": "no",
                    "number": "923609016",
                    "subresource": "officers",
                    "results": [
                      {
                        "name": "Jon Erik Reinhardsen",
                        "position": "styreleder"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `jurisdiction` — se connector-dokumentasjon for format."
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `number` — se connector-dokumentasjon for format."
          },
          {
            "name": "sub",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `sub` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/opencorporates/health": {
      "get": {
        "tags": [
          "connector:opencorporates"
        ],
        "operationId": "get_api_connectors_opencorporates_health",
        "summary": "GET /api/connectors/opencorporates/health (#1211).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opencorporates/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opencorporates/officers/search": {
      "get": {
        "tags": [
          "connector:opencorporates"
        ],
        "operationId": "get_api_connectors_opencorporates_officers_search",
        "summary": "GET /api/connectors/opencorporates/officers/search?q=&jurisdiction_code= (#1211).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opencorporates/officers/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opendata-dk/dataset/{id}": {
      "get": {
        "tags": [
          "connector:opendata-dk"
        ],
        "operationId": "get_api_connectors_opendata_dk_dataset__id_",
        "summary": "GET /api/connectors/opendata-dk/dataset/[id] (#1203).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opendata-dk/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOpendataDkDataset",
                  "additionalProperties": false,
                  "description": "Ett normalisert datasett fra opendata.dk (dansk kommunal CKAN-portal). Ingen `source`-felt — connecteren returnerer normalisert datasett direkte.",
                  "required": [
                    "id",
                    "name",
                    "title",
                    "description",
                    "organization",
                    "license",
                    "modified",
                    "created",
                    "tags",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-datasettets UUID (`raw.id`), eller null hvis mangler.",
                      "example": "a1b2c3d4-0000-0000-0000-000000000000"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "CKAN-slug (`raw.name`) — URL-vennlig identifikator.",
                      "example": "trafiktal-koebenhavn"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Menneskelesbar tittel (`raw.title`).",
                      "example": "Trafiktal i København"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Fritekst-beskrivelse (CKAN `notes`).",
                      "example": "Daglige trafiktal fra faste tællestationer i Københavns Kommune."
                    },
                    "organization": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Eier-organisasjon — `organization.title`, faller tilbake til `organization.name`, ellers null.",
                      "example": "Københavns Kommune"
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lisens-tittel (CKAN `license_title`). Varierer per datasett.",
                      "example": "Creative Commons Attribution 4.0"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Sist endret (CKAN `metadata_modified`, ISO-8601), eller null.",
                      "example": "2026-06-09T08:12:33.000123"
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Opprettet (CKAN `metadata_created`, ISO-8601), eller null.",
                      "example": "2024-01-15T10:00:00.000000"
                    },
                    "tags": {
                      "type": "array",
                      "description": "Emneord. Tom array hvis ingen tags. Tomme/manglende navn filtreres bort.",
                      "items": {
                        "type": "string",
                        "example": "trafik"
                      }
                    },
                    "resources": {
                      "type": "array",
                      "description": "Distribusjoner/filer knyttet til datasettet. Tom array hvis ingen.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "format",
                          "url"
                        ],
                        "description": "Én ressurs. Alle felt nullable — CKAN utelater det som mangler.",
                        "properties": {
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Ressurs-navn (CKAN `resource.name`).",
                            "example": "trafiktal-2026.csv"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Filformat (CKAN `resource.format`).",
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Nedlastings-URL (CKAN `resource.url`).",
                            "example": "https://portal.opendata.dk/dataset/.../download/trafiktal-2026.csv"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "a1b2c3d4-0000-0000-0000-000000000000",
                    "name": "trafiktal-koebenhavn",
                    "title": "Trafiktal i København",
                    "description": "Daglige trafiktal fra faste tællestationer i Københavns Kommune.",
                    "organization": "Københavns Kommune",
                    "license": "Creative Commons Attribution 4.0",
                    "modified": "2026-06-09T08:12:33.000123",
                    "created": "2024-01-15T10:00:00.000000",
                    "tags": [
                      "trafik",
                      "transport"
                    ],
                    "resources": [
                      {
                        "name": "trafiktal-2026.csv",
                        "format": "CSV",
                        "url": "https://portal.opendata.dk/dataset/.../download/trafiktal-2026.csv"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/opendata-dk/health": {
      "get": {
        "tags": [
          "connector:opendata-dk"
        ],
        "operationId": "get_api_connectors_opendata_dk_health",
        "summary": "GET /api/connectors/opendata-dk/health (#1203).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opendata-dk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opendata-dk/municipalities": {
      "get": {
        "tags": [
          "connector:opendata-dk"
        ],
        "operationId": "get_api_connectors_opendata_dk_municipalities",
        "summary": "GET /api/connectors/opendata-dk/municipalities (#1203).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opendata-dk/municipalities/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opendata-dk/search": {
      "get": {
        "tags": [
          "connector:opendata-dk"
        ],
        "operationId": "get_api_connectors_opendata_dk_search",
        "summary": "GET /api/connectors/opendata-dk/search?q=&municipality=&rows=&start= (#1203).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opendata-dk/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanDatasetSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søkeside fra et CKAN-basert åpen-data-register. Hvert datasett har organisasjon, lisens, tagger og ressurser (distribusjoner).",
                  "required": [
                    "datasets",
                    "count",
                    "rows",
                    "start"
                  ],
                  "properties": {
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "license",
                          "modified",
                          "created",
                          "tags",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "abc-123"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "vaerdata-2024"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Værdata 2024"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Ilmatieteen laitos"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CC-BY-4.0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-10"
                          },
                          "created": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-02-01"
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "vær",
                              "klima"
                            ]
                          },
                          "resources": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "name",
                                "format",
                                "url"
                              ],
                              "properties": {
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV-fil"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://example.org/data.csv"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream.",
                      "example": 120
                    },
                    "rows": {
                      "type": "integer",
                      "description": "Sidestørrelse (limit).",
                      "example": 20
                    },
                    "start": {
                      "type": "integer",
                      "description": "Offset.",
                      "example": 0
                    }
                  },
                  "example": {
                    "datasets": [
                      {
                        "id": "abc-123",
                        "name": "vaerdata-2024",
                        "title": "Værdata 2024",
                        "description": "Observasjoner per stasjon.",
                        "organization": "Ilmatieteen laitos",
                        "license": "CC-BY-4.0",
                        "modified": "2025-01-10",
                        "created": "2024-02-01",
                        "tags": [
                          "vær",
                          "klima"
                        ],
                        "resources": [
                          {
                            "name": "CSV-fil",
                            "format": "CSV",
                            "url": "https://example.org/data.csv"
                          }
                        ]
                      }
                    ],
                    "count": 120,
                    "rows": 20,
                    "start": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/openfigi/filter": {
      "post": {
        "tags": [
          "connector:openfigi"
        ],
        "operationId": "post_api_connectors_openfigi_filter",
        "summary": "POST /api/connectors/openfigi/filter Filtrer FIGI på egenskaper.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/openfigi/filter/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/openfigi/health": {
      "get": {
        "tags": [
          "connector:openfigi"
        ],
        "operationId": "get_api_connectors_openfigi_health",
        "summary": "GET /api/connectors/openfigi/health Default: statisk status for OpenFIGI-connectoren (fungerer keyle",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/openfigi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/openfigi/mapping": {
      "get": {
        "tags": [
          "connector:openfigi"
        ],
        "operationId": "get_api_connectors_openfigi_mapping",
        "summary": "GET/POST /api/connectors/openfigi/mapping GET: én job fra query (?idType=ID_ISIN&idValue=NO001009698",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/openfigi/mapping/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "connector:openfigi"
        ],
        "operationId": "post_api_connectors_openfigi_mapping",
        "summary": "GET/POST /api/connectors/openfigi/mapping GET: én job fra query (?idType=ID_ISIN&idValue=NO001009698",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/openfigi/mapping/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/openfigi/search": {
      "get": {
        "tags": [
          "connector:openfigi"
        ],
        "operationId": "get_api_connectors_openfigi_search",
        "summary": "GET/POST /api/connectors/openfigi/search GET: ?query=Equinor&exchCode=NO.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/openfigi/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOpenfigiSearch",
                  "additionalProperties": false,
                  "description": "Instrument-/verdipapirsøk i OpenFIGI: FIGI-identifikatorer, ticker, børs og verdipapirtype. `next` er cursor for neste side.",
                  "required": [
                    "source",
                    "resultCount",
                    "records",
                    "next"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "openfigi"
                      ]
                    },
                    "resultCount": {
                      "type": "integer",
                      "example": 1
                    },
                    "records": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "figi",
                          "compositeFIGI",
                          "shareClassFIGI",
                          "name",
                          "ticker",
                          "exchCode",
                          "marketSector",
                          "securityType",
                          "securityDescription",
                          "source"
                        ],
                        "properties": {
                          "figi": {
                            "type": "string",
                            "example": "BBG000NSV432"
                          },
                          "compositeFIGI": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "BBG000NSV432"
                          },
                          "shareClassFIGI": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "BBG001SQ4XV1"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "EQUINOR ASA"
                          },
                          "ticker": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "EQNR"
                          },
                          "exchCode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "OL"
                          },
                          "marketSector": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Equity"
                          },
                          "securityType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Common Stock"
                          },
                          "securityDescription": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "EQNR NO"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "openfigi"
                            ]
                          }
                        }
                      }
                    },
                    "next": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Upstream paginerings-cursor for neste side."
                    }
                  },
                  "example": {
                    "source": "openfigi",
                    "resultCount": 1,
                    "records": [
                      {
                        "figi": "BBG000NSV432",
                        "compositeFIGI": "BBG000NSV432",
                        "shareClassFIGI": "BBG001SQ4XV1",
                        "name": "EQUINOR ASA",
                        "ticker": "EQNR",
                        "exchCode": "OL",
                        "marketSector": "Equity",
                        "securityType": "Common Stock",
                        "securityDescription": "EQNR NO",
                        "source": "openfigi"
                      }
                    ],
                    "next": null
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "connector:openfigi"
        ],
        "operationId": "post_api_connectors_openfigi_search",
        "summary": "GET/POST /api/connectors/openfigi/search GET: ?query=Equinor&exchCode=NO.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/openfigi/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opensanctions/health": {
      "get": {
        "tags": [
          "connector:opensanctions"
        ],
        "operationId": "get_api_connectors_opensanctions_health",
        "summary": "GET /api/connectors/opensanctions/health OpenSanctions EU Sanctions Map — helsestatus.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opensanctions/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opensanctions/match": {
      "post": {
        "tags": [
          "connector:opensanctions"
        ],
        "operationId": "post_api_connectors_opensanctions_match",
        "summary": "POST /api/connectors/opensanctions/match (#2850) Strukturert screening mot OpenSanctions Matching AP",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opensanctions/match/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/opensanctions/screening": {
      "get": {
        "tags": [
          "connector:opensanctions"
        ],
        "operationId": "get_api_connectors_opensanctions_screening",
        "summary": "GET /api/connectors/opensanctions/screening Søk og filtrer i OpenSanctions EU Sanctions Map (åpen EU",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/opensanctions/screening/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/orsf-sk/company/{ico}": {
      "get": {
        "tags": [
          "connector:orsf-sk"
        ],
        "operationId": "get_api_connectors_orsf_sk_company__ico_",
        "summary": "GET /api/connectors/orsf-sk/company/[ico] (#3773).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/orsf-sk/company/[ico]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOrsfSkCompany",
                  "additionalProperties": false,
                  "description": "Ett normalisert slovakisk selskap slått opp på IČO. Kanonisk, flat form med juridisk form, VAT (IČ DPH), skattenummer (DIČ) og register-referanse.",
                  "required": [
                    "id",
                    "name",
                    "status",
                    "country",
                    "source"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "IČO — kanonisk slovakisk foretaks-id.",
                      "example": "35763469"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Slovak Telekom, a. s."
                    },
                    "address": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Bajkalská 28, 817 62 Bratislava"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "inactive",
                        "unknown"
                      ],
                      "description": "Normalisert aktivitetsstatus."
                    },
                    "legalForm": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Juridisk form (f.eks. «a. s.», «s. r. o.»).",
                      "example": "Akciová spoločnosť"
                    },
                    "vatId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "IČ DPH (VAT-nummer) hvis registrert.",
                      "example": "SK2020273893"
                    },
                    "taxId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "DIČ — slovakisk skattenummer, separat fra VAT.",
                      "example": "2020273893"
                    },
                    "register": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Register selskapet er ført i (Obchodný register / RPO).",
                      "example": "Obchodný register"
                    },
                    "registerNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Saks-/innførselsnummer i registeret.",
                      "example": "2081/B"
                    },
                    "established": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-dato eller år som streng.",
                      "example": "1999-04-01"
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "SK"
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "orsf.sk"
                      ]
                    }
                  },
                  "example": {
                    "id": "35763469",
                    "name": "Slovak Telekom, a. s.",
                    "address": "Bajkalská 28, 817 62 Bratislava",
                    "status": "active",
                    "legalForm": "Akciová spoločnosť",
                    "vatId": "SK2020273893",
                    "taxId": "2020273893",
                    "register": "Obchodný register",
                    "registerNumber": "2081/B",
                    "established": "1999-04-01",
                    "country": "SK",
                    "source": "orsf.sk"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "ico",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `ico` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/orsf-sk/health": {
      "get": {
        "tags": [
          "connector:orsf-sk"
        ],
        "operationId": "get_api_connectors_orsf_sk_health",
        "summary": "GET /api/connectors/orsf-sk/health (#3773).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/orsf-sk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/orsf-sk/search": {
      "get": {
        "tags": [
          "connector:orsf-sk"
        ],
        "operationId": "get_api_connectors_orsf_sk_search",
        "summary": "GET /api/connectors/orsf-sk/search?query= (alias: ?q=) (#3773).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/orsf-sk/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOrsfSkSearch",
                  "additionalProperties": false,
                  "description": "Søketreff fra det slovakiske foretaksregisteret. Normaliserte selskaper + paginering (offset-basert).",
                  "required": [
                    "companies",
                    "count",
                    "total",
                    "query",
                    "limit",
                    "offset"
                  ],
                  "properties": {
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "status",
                          "country",
                          "source"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "35763469"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Slovak Telekom, a. s."
                          },
                          "address": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "inactive",
                              "unknown"
                            ]
                          },
                          "legalForm": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Akciová spoločnosť"
                          },
                          "vatId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "SK2020273893"
                          },
                          "taxId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2020273893"
                          },
                          "register": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Obchodný register"
                          },
                          "registerNumber": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2081/B"
                          },
                          "established": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1999-04-01"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "SK"
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "orsf.sk"
                            ]
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall selskaper i denne siden.",
                      "example": 1
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total antall treff upstream (før paginering).",
                      "example": 1
                    },
                    "query": {
                      "type": "string",
                      "example": "telekom"
                    },
                    "limit": {
                      "type": "integer",
                      "example": 25
                    },
                    "offset": {
                      "type": "integer",
                      "example": 0
                    }
                  },
                  "example": {
                    "companies": [
                      {
                        "id": "35763469",
                        "name": "Slovak Telekom, a. s.",
                        "address": "Bajkalská 28, 817 62 Bratislava",
                        "status": "active",
                        "legalForm": "Akciová spoločnosť",
                        "vatId": "SK2020273893",
                        "taxId": "2020273893",
                        "register": "Obchodný register",
                        "registerNumber": "2081/B",
                        "established": "1999-04-01",
                        "country": "SK",
                        "source": "orsf.sk"
                      }
                    ],
                    "count": 1,
                    "total": 1,
                    "query": "telekom",
                    "limit": 25,
                    "offset": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng (minst 2 tegn)",
            "example": "Eset"
          }
        ]
      }
    },
    "/api/connectors/oslo-bors/health": {
      "get": {
        "tags": [
          "connector:oslo-bors"
        ],
        "operationId": "get_api_connectors_oslo_bors_health",
        "summary": "GET /api/connectors/oslo-bors/health Oslo Børs (Euronext) connector status.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oslo-bors/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/oslo-bors/indices": {
      "get": {
        "tags": [
          "connector:oslo-bors"
        ],
        "operationId": "get_api_connectors_oslo_bors_indices",
        "summary": "GET /api/connectors/oslo-bors/indices[?category=benchmark|tradable|sector|shariah] Kuratert katalog ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oslo-bors/indices/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/oslo-bors/instruments": {
      "get": {
        "tags": [
          "connector:oslo-bors"
        ],
        "operationId": "get_api_connectors_oslo_bors_instruments",
        "summary": "GET /api/connectors/oslo-bors/instruments?ticker=EQNR&market=XOSL Henter instrumentdata fra Oslo Bør",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oslo-bors/instruments/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorOsloBorsInstruments",
                  "description": "Liste over normaliserte instrumenter (aksjer m.m.) notert på Oslo Børs (Euronext). Tom array hvis ingen treff. Hvert element er ett normalisert instrument fra Euronext-API-et.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Ett normalisert instrument (`NormalizedInstrument`). Kun `id` er alltid til stede; alle øvrige felt er nullable fordi `normalizeInstrument` defaulter til `null` når upstream utelater verdien.",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Stabil instrument-ID. Avledet av `id`, ev. `isin`, ev. `ticker` (tom streng hvis alle mangler).",
                        "example": "NO0010096985"
                      },
                      "isin": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "International Securities Identification Number.",
                        "example": "NO0010096985"
                      },
                      "ticker": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Ticker-/symbolkode på markedsplassen.",
                        "example": "EQNR"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Instrument-/selskapsnavn.",
                        "example": "Equinor ASA"
                      },
                      "market": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Markedsplass-kode (MIC), f.eks. XOSL for Oslo Børs.",
                        "example": "XOSL"
                      },
                      "currency": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Handelsvaluta (ISO 4217).",
                        "example": "NOK"
                      },
                      "lastPrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Siste omsetningskurs.",
                        "example": 285.4
                      },
                      "closingPrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Sluttkurs forrige handelsdag.",
                        "example": 284.1
                      },
                      "openPrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Åpningskurs.",
                        "example": 283.5
                      },
                      "highPrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Høyeste kurs i perioden.",
                        "example": 287.2
                      },
                      "lowPrice": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Laveste kurs i perioden.",
                        "example": 282
                      },
                      "volume": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Omsatt volum (antall andeler).",
                        "example": 1543210
                      },
                      "turnover": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Omsetning i valuta.",
                        "example": 440123456
                      },
                      "changePercent": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Endring i prosent fra forrige sluttkurs.",
                        "example": 0.46
                      },
                      "changeAbsolute": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Endring i absolutt kursverdi fra forrige sluttkurs.",
                        "example": 1.3
                      },
                      "sector": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Sektor-/bransjeklassifisering.",
                        "example": "Energy"
                      },
                      "listDate": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Noteringsdato (ISO-8601-dato).",
                        "example": "2001-06-18"
                      }
                    }
                  },
                  "example": [
                    {
                      "id": "NO0010096985",
                      "isin": "NO0010096985",
                      "ticker": "EQNR",
                      "name": "Equinor ASA",
                      "market": "XOSL",
                      "currency": "NOK",
                      "lastPrice": 285.4,
                      "closingPrice": 284.1,
                      "openPrice": 283.5,
                      "highPrice": 287.2,
                      "lowPrice": 282,
                      "volume": 1543210,
                      "turnover": 440123456,
                      "changePercent": 0.46,
                      "changeAbsolute": 1.3,
                      "sector": "Energy",
                      "listDate": "2001-06-18"
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/oslo-bors/quotes": {
      "get": {
        "tags": [
          "connector:oslo-bors"
        ],
        "operationId": "get_api_connectors_oslo_bors_quotes",
        "summary": "GET /api/connectors/oslo-bors/quotes?ticker=EQNR[&from=YYYY-MM-DD&to=YYYY-MM-DD] Historiske ticker-k",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/oslo-bors/quotes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorOsloBorsQuotes",
                  "additionalProperties": false,
                  "description": "Historiske dagskurser (OHLCV-candles) for ett instrument på Oslo Børs. Definert kontrakt — serveres som live 200 når Euronext-upstream er nådd via Cloud NAT (#2763).",
                  "required": [
                    "ticker",
                    "market",
                    "from",
                    "to",
                    "candles",
                    "source"
                  ],
                  "properties": {
                    "ticker": {
                      "type": "string",
                      "pattern": "^[A-Z0-9.-]{1,12}$",
                      "description": "Normalisert ticker (uppercase, 1–12 tegn — bokstaver, tall, punktum, bindestrek).",
                      "example": "EQNR"
                    },
                    "market": {
                      "type": "string",
                      "description": "MIC-kode for markedsplass (Oslo Børs = XOSL).",
                      "example": "XOSL"
                    },
                    "from": {
                      "type": "string",
                      "format": "date",
                      "description": "Startdato for kursperioden (ISO-8601).",
                      "example": "2026-01-01"
                    },
                    "to": {
                      "type": "string",
                      "format": "date",
                      "description": "Sluttdato for kursperioden (ISO-8601).",
                      "example": "2026-06-24"
                    },
                    "candles": {
                      "type": "array",
                      "description": "Dagskurser (OHLCV) for perioden, kronologisk. Tom ved ingen handelsdager.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "date",
                          "open",
                          "high",
                          "low",
                          "close",
                          "volume"
                        ],
                        "description": "Én handelsdags OHLCV-kurs.",
                        "properties": {
                          "date": {
                            "type": "string",
                            "format": "date",
                            "description": "Handelsdato (ISO-8601).",
                            "example": "2026-06-23"
                          },
                          "open": {
                            "type": "number",
                            "description": "Åpningskurs.",
                            "example": 312.5
                          },
                          "high": {
                            "type": "number",
                            "description": "Høyeste kurs i løpet av dagen.",
                            "example": 318.2
                          },
                          "low": {
                            "type": "number",
                            "description": "Laveste kurs i løpet av dagen.",
                            "example": 310.1
                          },
                          "close": {
                            "type": "number",
                            "description": "Sluttkurs.",
                            "example": 316.8
                          },
                          "volume": {
                            "type": "number",
                            "description": "Omsatt volum (antall aksjer).",
                            "example": 4821300
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "oslo-bors"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "oslo-bors"
                    }
                  },
                  "example": {
                    "ticker": "EQNR",
                    "market": "XOSL",
                    "from": "2026-06-22",
                    "to": "2026-06-23",
                    "candles": [
                      {
                        "date": "2026-06-22",
                        "open": 309,
                        "high": 313.4,
                        "low": 307.6,
                        "close": 312.5,
                        "volume": 3950100
                      },
                      {
                        "date": "2026-06-23",
                        "open": 312.5,
                        "high": 318.2,
                        "low": 310.1,
                        "close": 316.8,
                        "volume": 4821300
                      }
                    ],
                    "source": "oslo-bors"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "ticker",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ticker-symbol på Oslo Børs",
            "example": "EQNR"
          }
        ]
      }
    },
    "/api/connectors/patentstyret/company/{orgnr}/ipr": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_company__orgnr__ipr",
        "summary": "GET /api/connectors/patentstyret/company/{orgnr}/ipr Kanonisk path-alias for IprCasesByCompany — all",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/company/[orgnr]/ipr/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorPatentstyretIpr",
                  "additionalProperties": false,
                  "description": "IPR-saker (patent/varemerke/design) for ett organisasjonsnummer, hentet rått fra Patentstyrets register-API og pakket i en proveniens-konvolutt.",
                  "required": [
                    "data",
                    "orgnr",
                    "source"
                  ],
                  "properties": {
                    "data": {
                      "description": "Ubehandlet svar-kropp fra Patentstyret (`IprCasesByCompany`). Strukturen videreformidles uendret (route typer den som `unknown`) og er derfor ikke kontraktfestet her — kan være objekt, array eller skalar avhengig av upstream.",
                      "example": {
                        "cases": [
                          {
                            "caseNumber": "201912345",
                            "type": "trademark",
                            "status": "registered"
                          }
                        ]
                      }
                    },
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "9-sifret organisasjonsnummer det ble slått opp på (ekko av path-param).",
                      "example": "923609016"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Patentstyret OpenData-external — patentstyret.no"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "Patentstyret OpenData-external — patentstyret.no"
                    }
                  },
                  "example": {
                    "data": {
                      "cases": [
                        {
                          "caseNumber": "201912345",
                          "type": "trademark",
                          "status": "registered"
                        }
                      ]
                    },
                    "orgnr": "923609016",
                    "source": "Patentstyret OpenData-external — patentstyret.no"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/patentstyret/design/{applicationId}": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_design__applicationId_",
        "summary": "GET /api/connectors/patentstyret/design/{applicationId} Designdetalj fra Patentstyret OpenData-exter",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/design/[applicationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorPatentstyretDesign",
                  "additionalProperties": false,
                  "description": "Ett design(mønster) slått opp på søknads-/registreringsnummer hos Patentstyret. `data` er den rå upstream-posten (uendret), pakket i en liten typet envelope.",
                  "required": [
                    "data",
                    "applicationId",
                    "type",
                    "source"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-JSON fra Patentstyrets designregister, videresendt verbatim. Feltstrukturen bestemmes av Patentstyret og er ikke normalisert av KETL."
                    },
                    "applicationId": {
                      "type": "string",
                      "description": "Søknads-/registreringsnummer (ekko av path-parameteret).",
                      "example": "20200456"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "design"
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Patentstyret OpenData-external — patentstyret.no"
                      ]
                    }
                  },
                  "example": {
                    "data": {
                      "applicationNumber": "20200456",
                      "title": "Stoldesign",
                      "status": "Registrert"
                    },
                    "applicationId": "20200456",
                    "type": "design",
                    "source": "Patentstyret OpenData-external — patentstyret.no"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `applicationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/patentstyret/designs": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_designs",
        "summary": "GET /api/connectors/patentstyret/designs?q=chair&locarnoClass=06&limit=20 Søk i designregisteret fra",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/designs/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/patentstyret/health": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_health",
        "summary": "GET /api/connectors/patentstyret/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/patentstyret/patent/{applicationId}": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_patent__applicationId_",
        "summary": "GET /api/connectors/patentstyret/patent/{applicationId} Patentdetalj fra Patentstyret OpenData-exter",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/patent/[applicationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorPatentstyretPatent",
                  "additionalProperties": false,
                  "description": "Ett patent slått opp på søknads-/registreringsnummer hos Patentstyret. `data` er den rå upstream-posten (uendret), pakket i en liten typet envelope.",
                  "required": [
                    "data",
                    "applicationId",
                    "type",
                    "source"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-JSON fra Patentstyrets patentregister, videresendt verbatim. Feltstrukturen bestemmes av Patentstyret og er ikke normalisert av KETL."
                    },
                    "applicationId": {
                      "type": "string",
                      "description": "Søknads-/registreringsnummer (ekko av path-parameteret).",
                      "example": "20200001"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "patent"
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Patentstyret OpenData-external — patentstyret.no"
                      ]
                    }
                  },
                  "example": {
                    "data": {
                      "applicationNumber": "20200001",
                      "title": "Fremgangsmåte for karbonfangst",
                      "status": "Meddelt"
                    },
                    "applicationId": "20200001",
                    "type": "patent",
                    "source": "Patentstyret OpenData-external — patentstyret.no"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `applicationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/patentstyret/patents": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_patents",
        "summary": "GET /api/connectors/patentstyret/patents?q=havvind&ipcClass=F03D Henter patentsøk fra Patentstyret.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/patents/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/patentstyret/portfolio": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_portfolio",
        "summary": "GET /api/connectors/patentstyret/portfolio?orgnr= IPR-portefølje per aktør via Patentstyret OpenData",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/portfolio/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer) — IPR-portefølje for selskapet",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/patentstyret/trademark/{applicationId}": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_trademark__applicationId_",
        "summary": "GET /api/connectors/patentstyret/trademark/{applicationId} Varemerkedetalj fra Patentstyret OpenData",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/trademark/[applicationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorPatentstyretTrademark",
                  "additionalProperties": false,
                  "description": "Ett varemerke slått opp på søknads-/registreringsnummer hos Patentstyret. `data` er den rå upstream-posten (uendret), pakket i en liten typet envelope.",
                  "required": [
                    "data",
                    "applicationId",
                    "type",
                    "source"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Rå upstream-JSON fra Patentstyrets varemerkeregister, videresendt verbatim. Feltstrukturen bestemmes av Patentstyret og er ikke normalisert av KETL."
                    },
                    "applicationId": {
                      "type": "string",
                      "description": "Søknads-/registreringsnummer (ekko av path-parameteret).",
                      "example": "202012345"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "trademark"
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Patentstyret OpenData-external — patentstyret.no"
                      ]
                    }
                  },
                  "example": {
                    "data": {
                      "applicationNumber": "202012345",
                      "markText": "KETL",
                      "status": "Registrert"
                    },
                    "applicationId": "202012345",
                    "type": "trademark",
                    "source": "Patentstyret OpenData-external — patentstyret.no"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `applicationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/patentstyret/trademarks": {
      "get": {
        "tags": [
          "connector:patentstyret"
        ],
        "operationId": "get_api_connectors_patentstyret_trademarks",
        "summary": "GET /api/connectors/patentstyret/trademarks?q=apple&niceClass=35&limit=20 Søk i varemerkeregisteret ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/patentstyret/trademarks/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/polarinstitutt/datasets": {
      "get": {
        "tags": [
          "connector:polarinstitutt"
        ],
        "operationId": "get_api_connectors_polarinstitutt_datasets",
        "summary": "GET /api/connectors/polarinstitutt/datasets Søk i Polarinstituttets datasettregister (klima, geologi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polarinstitutt/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/polarinstitutt/health": {
      "get": {
        "tags": [
          "connector:polarinstitutt"
        ],
        "operationId": "get_api_connectors_polarinstitutt_health",
        "summary": "GET /api/connectors/polarinstitutt/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polarinstitutt/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/polarinstitutt/placenames": {
      "get": {
        "tags": [
          "connector:polarinstitutt"
        ],
        "operationId": "get_api_connectors_polarinstitutt_placenames",
        "summary": "GET /api/connectors/polarinstitutt/placenames Søk i stedsnavn for Svalbard, Jan Mayen og Antarktis.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polarinstitutt/placenames/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/polarinstitutt/placenames/{id}": {
      "get": {
        "tags": [
          "connector:polarinstitutt"
        ],
        "operationId": "get_api_connectors_polarinstitutt_placenames__id_",
        "summary": "GET /api/connectors/polarinstitutt/placenames/[id] Hent ett polart stedsnavn med koordinater og vari",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polarinstitutt/placenames/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorPolarinstituttPlacename",
                  "additionalProperties": false,
                  "description": "Ett normalisert stedsnavn fra Norsk Polarinstitutts stedsnavnregister (Svalbard/Antarktis/polare områder), slått opp på id. Inkluderer terreng-/ featuretype, status og koordinater.",
                  "required": [
                    "id",
                    "name"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "12345"
                    },
                    "name": {
                      "type": "string",
                      "description": "Stedsnavn (alltid satt).",
                      "example": "Nordenskiöldbreen"
                    },
                    "area": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Svalbard"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Norge"
                    },
                    "featureType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Bre"
                    },
                    "terrain": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Isbre"
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Godkjent"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "year": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 1861
                    },
                    "latitude": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 78.66
                    },
                    "longitude": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 17
                    }
                  },
                  "example": {
                    "id": "12345",
                    "name": "Nordenskiöldbreen",
                    "area": "Svalbard",
                    "country": "Norge",
                    "featureType": "Bre",
                    "terrain": "Isbre",
                    "status": "Godkjent",
                    "description": null,
                    "year": 1861,
                    "latitude": 78.66,
                    "longitude": 17
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/polisen-se/events": {
      "get": {
        "tags": [
          "connector:polisen-se"
        ],
        "operationId": "get_api_connectors_polisen_se_events",
        "summary": "GET /api/connectors/polisen-se/events?locationname=&typename=&DateTime= Siste 500 politihendelser fr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polisen-se/events/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/polisen-se/health": {
      "get": {
        "tags": [
          "connector:polisen-se"
        ],
        "operationId": "get_api_connectors_polisen_se_health",
        "summary": "GET /api/connectors/polisen-se/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polisen-se/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/polisen-se/policestations": {
      "get": {
        "tags": [
          "connector:polisen-se"
        ],
        "operationId": "get_api_connectors_polisen_se_policestations",
        "summary": "GET /api/connectors/polisen-se/policestations Alle svenske politistasjoner med adresse og koordinate",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/polisen-se/policestations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/politiloggen/health": {
      "get": {
        "tags": [
          "connector:politiloggen"
        ],
        "operationId": "get_api_connectors_politiloggen_health",
        "summary": "GET /api/connectors/politiloggen/health Default: statisk metadata via `politiloggenHealth()`.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/politiloggen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/politiloggen/recent": {
      "get": {
        "tags": [
          "connector:politiloggen"
        ],
        "operationId": "get_api_connectors_politiloggen_recent",
        "summary": "GET /api/connectors/politiloggen/recent?take=20&skip=0&district=Oslo&category=Trafikk Siste politihe",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/politiloggen/recent/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/pxweb/health": {
      "get": {
        "tags": [
          "connector:pxweb"
        ],
        "operationId": "get_api_connectors_pxweb_health",
        "summary": "GET /api/connectors/pxweb/health Statisk health-svar for den delte PxWebApi v2-adapteren (#3086).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/pxweb/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/qsar-toolbox/classification": {
      "get": {
        "tags": [
          "connector:qsar-toolbox"
        ],
        "operationId": "get_api_connectors_qsar_toolbox_classification",
        "summary": "GET /api/connectors/qsar-toolbox/classification?toolboxId= (#2448) GHS/CLP-klassifisering for en git",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/qsar-toolbox/classification/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "toolboxId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Toolbox stoff-ID",
            "example": "abc-123"
          }
        ]
      }
    },
    "/api/connectors/qsar-toolbox/health": {
      "get": {
        "tags": [
          "connector:qsar-toolbox"
        ],
        "operationId": "get_api_connectors_qsar_toolbox_health",
        "summary": "GET /api/connectors/qsar-toolbox/health (#2448)",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/qsar-toolbox/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/qsar-toolbox/properties": {
      "get": {
        "tags": [
          "connector:qsar-toolbox"
        ],
        "operationId": "get_api_connectors_qsar_toolbox_properties",
        "summary": "GET /api/connectors/qsar-toolbox/properties?toolboxId=&property= (#2448) Kjemiske egenskaper for en ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/qsar-toolbox/properties/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "property",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Egenskap å hente (f.eks. log_kow, melting_point)",
            "example": "log_kow"
          },
          {
            "name": "toolboxId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Toolbox stoff-ID",
            "example": "abc-123"
          }
        ]
      }
    },
    "/api/connectors/qsar-toolbox/substances": {
      "get": {
        "tags": [
          "connector:qsar-toolbox"
        ],
        "operationId": "get_api_connectors_qsar_toolbox_substances",
        "summary": "GET /api/connectors/qsar-toolbox/substances?q=&cas=&ec=&limit= (#2448) Kjemikaliesøk i QSAR Toolbox-",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/qsar-toolbox/substances/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "cas",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "CAS-nummer",
            "example": "71-43-2"
          },
          {
            "name": "ec",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "EC-nummer",
            "example": "200-753-7"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Stoffnavn (minst én av q/cas/ec)",
            "example": "benzene"
          }
        ]
      }
    },
    "/api/connectors/regjeringen/health": {
      "get": {
        "tags": [
          "connector:regjeringen"
        ],
        "operationId": "get_api_connectors_regjeringen_health",
        "summary": "GET /api/connectors/regjeringen/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/regjeringen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/regjeringen/hearings": {
      "get": {
        "tags": [
          "connector:regjeringen"
        ],
        "operationId": "get_api_connectors_regjeringen_hearings",
        "summary": "GET /api/connectors/regjeringen/hearings?ministry=JD&status=open Henter offentlige høringer fra Regj",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/regjeringen/hearings/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/regjeringen/press-releases": {
      "get": {
        "tags": [
          "connector:regjeringen"
        ],
        "operationId": "get_api_connectors_regjeringen_press_releases",
        "summary": "GET /api/connectors/regjeringen/press-releases?ministry=JD&q=klima Henter pressemeldinger fra Regjer",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/regjeringen/press-releases/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/retsinformation-dk/documents": {
      "get": {
        "tags": [
          "connector:retsinformation-dk"
        ],
        "operationId": "get_api_connectors_retsinformation_dk_documents",
        "summary": "GET /api/connectors/retsinformation-dk/documents?date=YYYY-MM-DD Henter alle dokumenter som er lagt ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/retsinformation-dk/documents/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Dato (YYYY-MM-DD). Default: i dag. Maks 10 dager tilbake — derfor utelatt som fast eksempel (glidende vindu, #4338)."
          }
        ]
      }
    },
    "/api/connectors/retsinformation-dk/health": {
      "get": {
        "tags": [
          "connector:retsinformation-dk"
        ],
        "operationId": "get_api_connectors_retsinformation_dk_health",
        "summary": "GET /api/connectors/retsinformation-dk/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/retsinformation-dk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/reviews/health": {
      "get": {
        "tags": [
          "connector:reviews"
        ],
        "operationId": "get_api_connectors_reviews_health",
        "summary": "GET /api/connectors/reviews/health Liveness-check for KETL Omtaleanalyse-connectoren (#2711).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/reviews/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/reviews/profile": {
      "get": {
        "tags": [
          "connector:reviews"
        ],
        "operationId": "get_api_connectors_reviews_profile",
        "summary": "GET /api/connectors/reviews/profile?orgnr=|domain=|name= KETL Omtaleanalyse — aggregert omtale-profi",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/reviews/profile/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/reviews/sources": {
      "get": {
        "tags": [
          "connector:reviews"
        ],
        "operationId": "get_api_connectors_reviews_sources",
        "summary": "GET /api/connectors/reviews/sources KETL Omtaleanalyse — katalog over tilgjengelige omtale-kilder (#",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/reviews/sources/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/rik-ee/company/{regCode}": {
      "get": {
        "tags": [
          "connector:rik-ee"
        ],
        "operationId": "get_api_connectors_rik_ee_company__regCode_",
        "summary": "GET /api/connectors/rik-ee/company/[regCode] (#3522).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/rik-ee/company/[regCode]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorRikEeCompany",
                  "additionalProperties": false,
                  "description": "Ett normalisert estisk selskap slått opp på registrikood (registreringskode). Kanonisk, flat form med navn, adresse, status og juridisk form.",
                  "required": [
                    "id",
                    "name",
                    "status",
                    "country",
                    "source"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "registrikood — kanonisk estisk registreringskode.",
                      "example": "10137025"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Telia Eesti AS"
                    },
                    "address": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Mustamäe tee 3, Tallinn 15033"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "inactive",
                        "unknown"
                      ],
                      "description": "Normalisert aktivitetsstatus."
                    },
                    "legalForm": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Juridisk form (f.eks. «AS», «OÜ»).",
                      "example": "Aktsiaselts"
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "EE"
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "rik"
                      ]
                    }
                  },
                  "example": {
                    "id": "10137025",
                    "name": "Telia Eesti AS",
                    "address": "Mustamäe tee 3, Tallinn 15033",
                    "status": "active",
                    "legalForm": "Aktsiaselts",
                    "country": "EE",
                    "source": "rik"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "regCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `regCode` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/rik-ee/health": {
      "get": {
        "tags": [
          "connector:rik-ee"
        ],
        "operationId": "get_api_connectors_rik_ee_health",
        "summary": "GET /api/connectors/rik-ee/health (#3522).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/rik-ee/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/rik-ee/search": {
      "get": {
        "tags": [
          "connector:rik-ee"
        ],
        "operationId": "get_api_connectors_rik_ee_search",
        "summary": "GET /api/connectors/rik-ee/search?query= (alias: ?name=) (#3522).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/rik-ee/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorRikEeSearch",
                  "additionalProperties": false,
                  "description": "Søketreff fra det estiske foretaksregisteret. Normaliserte selskaper (kompakt form) + søkestreng.",
                  "required": [
                    "companies",
                    "count",
                    "query"
                  ],
                  "properties": {
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "status",
                          "country",
                          "source"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "10137025"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Telia Eesti AS"
                          },
                          "address": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Mustamäe tee 3, Tallinn 15033"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "inactive",
                              "unknown"
                            ]
                          },
                          "legalForm": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Aktsiaselts"
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "EE"
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "rik"
                            ]
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "query": {
                      "type": "string",
                      "example": "telia"
                    }
                  },
                  "example": {
                    "companies": [
                      {
                        "id": "10137025",
                        "name": "Telia Eesti AS",
                        "address": "Mustamäe tee 3, Tallinn 15033",
                        "status": "active",
                        "legalForm": "Aktsiaselts",
                        "country": "EE",
                        "source": "rik"
                      }
                    ],
                    "count": 1,
                    "query": "telia"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng (selskapsnavn)",
            "example": "Bolt"
          }
        ]
      }
    },
    "/api/connectors/riksantikvaren/cultural-heritage": {
      "get": {
        "tags": [
          "connector:riksantikvaren"
        ],
        "operationId": "get_api_connectors_riksantikvaren_cultural_heritage",
        "summary": "GET /api/connectors/riksantikvaren/cultural-heritage?q=oslo&municipality=0301&limit=20 Søk i Riksant",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksantikvaren/cultural-heritage/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksantikvaren/health": {
      "get": {
        "tags": [
          "connector:riksantikvaren"
        ],
        "operationId": "get_api_connectors_riksantikvaren_health",
        "summary": "GET /api/connectors/riksantikvaren/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksantikvaren/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksbanken/exchange-rates": {
      "get": {
        "tags": [
          "connector:riksbanken"
        ],
        "operationId": "get_api_connectors_riksbanken_exchange_rates",
        "summary": "GET /api/connectors/riksbanken/exchange-rates",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksbanken/exchange-rates/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksbanken/health": {
      "get": {
        "tags": [
          "connector:riksbanken"
        ],
        "operationId": "get_api_connectors_riksbanken_health",
        "summary": "GET /api/connectors/riksbanken/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksbanken/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksbanken/inflation": {
      "get": {
        "tags": [
          "connector:riksbanken"
        ],
        "operationId": "get_api_connectors_riksbanken_inflation",
        "summary": "GET /api/connectors/riksbanken/inflation Månedlig KPI-inflasjon (CPIF) fra Riksbanken SWEA — issue #",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksbanken/inflation/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksbanken/policy-rate": {
      "get": {
        "tags": [
          "connector:riksbanken"
        ],
        "operationId": "get_api_connectors_riksbanken_policy_rate",
        "summary": "GET /api/connectors/riksbanken/policy-rate",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksbanken/policy-rate/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksdagen/documents": {
      "get": {
        "tags": [
          "connector:riksdagen"
        ],
        "operationId": "get_api_connectors_riksdagen_documents",
        "summary": "GET /api/connectors/riksdagen/documents",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksdagen/documents/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksdagen/health": {
      "get": {
        "tags": [
          "connector:riksdagen"
        ],
        "operationId": "get_api_connectors_riksdagen_health",
        "summary": "GET /api/connectors/riksdagen/health Default: statisk metadata (rask).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksdagen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksdagen/members": {
      "get": {
        "tags": [
          "connector:riksdagen"
        ],
        "operationId": "get_api_connectors_riksdagen_members",
        "summary": "GET /api/connectors/riksdagen/members",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksdagen/members/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/riksdagen/votes": {
      "get": {
        "tags": [
          "connector:riksdagen"
        ],
        "operationId": "get_api_connectors_riksdagen_votes",
        "summary": "GET /api/connectors/riksdagen/votes Voteringsresultat fra Riksdagen.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/riksdagen/votes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/rss/discover": {
      "get": {
        "tags": [
          "connector:rss"
        ],
        "operationId": "get_api_connectors_rss_discover",
        "summary": "GET /api/connectors/rss/discover?domain=… (#4191).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/rss/discover/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorRssDiscover",
                  "additionalProperties": false,
                  "description": "Liste over RSS/Atom-feeds en nettside annonserer via `<link rel=\"alternate\">`.",
                  "required": [
                    "domain",
                    "pageUrl",
                    "feeds",
                    "count"
                  ],
                  "properties": {
                    "domain": {
                      "type": "string",
                      "description": "Det forespurte domenet/URL-en.",
                      "example": "regjeringen.no"
                    },
                    "pageUrl": {
                      "type": "string",
                      "description": "Den faktisk hentede side-URL-en (etter normalisering/redirects).",
                      "example": "https://www.regjeringen.no/"
                    },
                    "count": {
                      "type": "integer",
                      "example": 2
                    },
                    "feeds": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "url",
                          "title",
                          "type"
                        ],
                        "properties": {
                          "url": {
                            "type": "string",
                            "description": "Absolutt feed-URL.",
                            "example": "https://www.regjeringen.no/no/rss/Rss/2581966/"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Pressemeldinger"
                          },
                          "type": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Annonsert MIME-type.",
                            "example": "application/rss+xml"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "domain": "regjeringen.no",
                    "pageUrl": "https://www.regjeringen.no/",
                    "count": 1,
                    "feeds": [
                      {
                        "url": "https://www.regjeringen.no/no/rss/Rss/2581966/",
                        "title": "Pressemeldinger",
                        "type": "application/rss+xml"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/rss/feed": {
      "get": {
        "tags": [
          "connector:rss"
        ],
        "operationId": "get_api_connectors_rss_feed",
        "summary": "GET /api/connectors/rss/feed?url=…&limit=… (#4191).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/rss/feed/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorRssFeed",
                  "additionalProperties": false,
                  "description": "Normalisert RSS 2.0 / Atom-feed: feed-metadata + deduplisert artikkel-liste.",
                  "required": [
                    "feedUrl",
                    "kind",
                    "title",
                    "homepage",
                    "description",
                    "items",
                    "count"
                  ],
                  "properties": {
                    "feedUrl": {
                      "type": "string",
                      "description": "Den faktisk hentede feed-URL-en (etter ev. redirects).",
                      "example": "https://www.nrk.no/nyheter/siste.rss"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "rss",
                        "atom"
                      ],
                      "description": "Detektert feed-format.",
                      "example": "rss"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Feed-tittel. Null når feeden utelater den.",
                      "example": "NRK – Siste nytt"
                    },
                    "homepage": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Feed-nivå hjemmeside-lenke.",
                      "example": "https://www.nrk.no/"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Feed-beskrivelse / Atom subtitle.",
                      "example": "Siste nytt fra NRK"
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall (dedupliserte) artikler i `items`.",
                      "example": 20
                    },
                    "items": {
                      "type": "array",
                      "description": "Dedupliserte, normaliserte artikler.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "title",
                          "url",
                          "publishedAt",
                          "summary",
                          "author",
                          "topics"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Stabil dedup-id (guid/link, ev. hash av title+published).",
                            "example": "1.17939155"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Alvorlig trafikkulykke på Søre Sunnmøre"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://www.nrk.no/nyheter/sak-1.17939155"
                          },
                          "publishedAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time",
                            "description": "ISO-8601 hvis dato kunne tolkes, ellers null.",
                            "example": "2026-06-28T04:13:50.000Z"
                          },
                          "summary": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "HTML-strippet sammendrag.",
                            "example": "Én person var fastklemt etter en trafikkulykke."
                          },
                          "author": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": null
                          },
                          "topics": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "Trafikk i Møre og Romsdal"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "feedUrl": "https://www.nrk.no/nyheter/siste.rss",
                    "kind": "rss",
                    "title": "NRK – Siste nytt",
                    "homepage": "https://www.nrk.no/",
                    "description": null,
                    "count": 1,
                    "items": [
                      {
                        "id": "1.17939155",
                        "title": "Alvorlig trafikkulykke på Søre Sunnmøre",
                        "url": "https://www.nrk.no/nyheter/sak-1.17939155",
                        "publishedAt": "2026-06-28T04:13:50.000Z",
                        "summary": "Én person var fastklemt etter en trafikkulykke.",
                        "author": null,
                        "topics": [
                          "Trafikk i Møre og Romsdal"
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/rss/health": {
      "get": {
        "tags": [
          "connector:rss"
        ],
        "operationId": "get_api_connectors_rss_health",
        "summary": "GET /api/connectors/rss/health (#4191).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/rss/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sanksjoner/eu-fsf": {
      "get": {
        "tags": [
          "connector:sanksjoner"
        ],
        "operationId": "get_api_connectors_sanksjoner_eu_fsf",
        "summary": "GET /api/connectors/sanksjoner/eu-fsf 410 Gone — EU Financial Sanctions Files offentlig API er sunse",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sanksjoner/eu-fsf/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/sanksjoner/eu-fsf/search": {
      "get": {
        "tags": [
          "connector:sanksjoner"
        ],
        "operationId": "get_api_connectors_sanksjoner_eu_fsf_search",
        "summary": "GET /api/connectors/sanksjoner/eu-fsf/search 410 Gone — EU Financial Sanctions Files offentlig API e",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sanksjoner/eu-fsf/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/sanksjoner/health": {
      "get": {
        "tags": [
          "connector:sanksjoner"
        ],
        "operationId": "get_api_connectors_sanksjoner_health",
        "summary": "GET /api/connectors/sanksjoner/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sanksjoner/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sanksjoner/konsolidert": {
      "get": {
        "tags": [
          "connector:sanksjoner"
        ],
        "operationId": "get_api_connectors_sanksjoner_konsolidert",
        "summary": "GET /api/connectors/sanksjoner/konsolidert Konsolidert sanksjonssøk på tvers av alle aktive lister v",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sanksjoner/konsolidert/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sanksjoner/lister": {
      "get": {
        "tags": [
          "connector:sanksjoner"
        ],
        "operationId": "get_api_connectors_sanksjoner_lister",
        "summary": "GET /api/connectors/sanksjoner/lister Returnerer aktive sanksjonslister tilgjengelig via KETL (#2829",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sanksjoner/lister/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSanksjonerLister",
                  "additionalProperties": false,
                  "description": "Katalog over tilgjengelige sanksjonslister (via OpenSanctions) + historiske sunsettede lister. Statisk metadata; `status` reflekterer konfigurasjon.",
                  "required": [
                    "lister",
                    "sunsetLister"
                  ],
                  "properties": {
                    "lister": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "myndighet",
                          "provider",
                          "status",
                          "dekning",
                          "oppdateringsfrekvens",
                          "endepunkt",
                          "alternativEndepunkt",
                          "lisens",
                          "lisensNote",
                          "upstreamUrl"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "eu-fsf"
                          },
                          "navn": {
                            "type": "string",
                            "example": "EU Financial Sanctions Files"
                          },
                          "myndighet": {
                            "type": "string",
                            "example": "EU"
                          },
                          "provider": {
                            "type": "string",
                            "enum": [
                              "opensanctions"
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "aktiv",
                              "ikke_konfigurert"
                            ]
                          },
                          "dekning": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "personer",
                              "organisasjoner",
                              "fartoy"
                            ],
                            "properties": {
                              "personer": {
                                "type": "boolean"
                              },
                              "organisasjoner": {
                                "type": "boolean"
                              },
                              "fartoy": {
                                "type": "boolean"
                              }
                            }
                          },
                          "oppdateringsfrekvens": {
                            "type": "string",
                            "example": "Daglig"
                          },
                          "endepunkt": {
                            "type": "string",
                            "example": "/api/connectors/sanksjoner/eu-fsf/search"
                          },
                          "alternativEndepunkt": {
                            "type": "string"
                          },
                          "lisens": {
                            "type": "string",
                            "example": "CC-BY-NC 4.0"
                          },
                          "lisensNote": {
                            "type": "string"
                          },
                          "upstreamUrl": {
                            "type": "string",
                            "example": "https://www.opensanctions.org/datasets/eu_fsf/"
                          }
                        }
                      }
                    },
                    "sunsetLister": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "navn",
                          "myndighet",
                          "status",
                          "sunsetDato",
                          "arsak",
                          "alternativ"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "gammel-liste"
                          },
                          "navn": {
                            "type": "string"
                          },
                          "myndighet": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "sunsettet"
                            ]
                          },
                          "sunsetDato": {
                            "type": "string",
                            "example": "2025-01-01"
                          },
                          "arsak": {
                            "type": "string"
                          },
                          "alternativ": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "lister": [
                      {
                        "id": "eu-fsf",
                        "navn": "EU Financial Sanctions Files",
                        "myndighet": "EU",
                        "provider": "opensanctions",
                        "status": "aktiv",
                        "dekning": {
                          "personer": true,
                          "organisasjoner": true,
                          "fartoy": true
                        },
                        "oppdateringsfrekvens": "Daglig",
                        "endepunkt": "/api/connectors/sanksjoner/eu-fsf/search",
                        "alternativEndepunkt": "/api/connectors/eu-fsf/search",
                        "lisens": "CC-BY-NC 4.0",
                        "lisensNote": "Ikke-kommersiell bruk.",
                        "upstreamUrl": "https://www.opensanctions.org/datasets/eu_fsf/"
                      }
                    ],
                    "sunsetLister": []
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sanksjoner/screening": {
      "get": {
        "tags": [
          "connector:sanksjoner"
        ],
        "operationId": "get_api_connectors_sanksjoner_screening",
        "summary": "GET /api/connectors/sanksjoner/screening Søk og filtrer i EU konsolidert sanksjonsliste via OpenSanc",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sanksjoner/screening/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sbs-skatteetaten/ameldinger": {
      "get": {
        "tags": [
          "connector:sbs-skatteetaten"
        ],
        "operationId": "get_api_connectors_sbs_skatteetaten_ameldinger",
        "summary": "GET /api/connectors/sbs-skatteetaten/ameldinger?orgnr=&year=&month= (#2387) List innsendte a-melding",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sbs-skatteetaten/ameldinger/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sbs-skatteetaten/ameldinger/{id}": {
      "get": {
        "tags": [
          "connector:sbs-skatteetaten"
        ],
        "operationId": "get_api_connectors_sbs_skatteetaten_ameldinger__id_",
        "summary": "GET /api/connectors/sbs-skatteetaten/ameldinger/{id} (#2387) Detalj-oppslag for én a-melding.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sbs-skatteetaten/ameldinger/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sbs-skatteetaten/ameldinger/{id}/status": {
      "get": {
        "tags": [
          "connector:sbs-skatteetaten"
        ],
        "operationId": "get_api_connectors_sbs_skatteetaten_ameldinger__id__status",
        "summary": "GET /api/connectors/sbs-skatteetaten/ameldinger/{id}/status (#2387) Tilbakemeldings-status for én a-",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sbs-skatteetaten/ameldinger/[id]/status/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sbs-skatteetaten/health": {
      "get": {
        "tags": [
          "connector:sbs-skatteetaten"
        ],
        "operationId": "get_api_connectors_sbs_skatteetaten_health",
        "summary": "GET /api/connectors/sbs-skatteetaten/health (#2387) Status for Skatteetaten SBS REST API (A-melding/",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sbs-skatteetaten/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/scb-foretagsregistret/batch": {
      "get": {
        "tags": [
          "connector:scb-foretagsregistret"
        ],
        "operationId": "get_api_connectors_scb_foretagsregistret_batch",
        "summary": "GET /api/connectors/scb-foretagsregistret/batch?orgnr=5560000000,5560000001 Batch-oppslag på kommase",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-foretagsregistret/batch/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Kommaseparert liste av svenske org.nr",
            "example": "5560360793,5020010798"
          }
        ]
      }
    },
    "/api/connectors/scb-foretagsregistret/company/{orgnr}": {
      "get": {
        "tags": [
          "connector:scb-foretagsregistret"
        ],
        "operationId": "get_api_connectors_scb_foretagsregistret_company__orgnr_",
        "summary": "GET /api/connectors/scb-foretagsregistret/company/{orgnr} Selskapsdata (SNI-bransje, sysselsetting, ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-foretagsregistret/company/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorScbForetagsregistretCompany",
                  "additionalProperties": false,
                  "description": "Ett normalisert svensk foretak fra SCB Företagsregistret, slått opp på 10-sifret svensk organisasjonsnummer. Statistiske foretaksattributter (SNI-bransje, sysselsettings-/omsetningsklasse, län) — den svenske motparten til brreg/cvr.",
                  "required": [
                    "foretag",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "foretag": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Det normaliserte foretaket (kanonisk, flat form).",
                      "required": [
                        "orgnr"
                      ],
                      "properties": {
                        "orgnr": {
                          "type": "string",
                          "description": "SE organisasjonsnummer (10 siffer).",
                          "example": "5560360793"
                        },
                        "namn": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "Volvo Aktiebolag"
                        },
                        "sni": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "SNI-kode (NACE Rev. 2).",
                          "example": "29100"
                        },
                        "sniText": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Lesbar SNI-tekst (bransjebeskrivelse).",
                          "example": "Tillverkning av motorfordon"
                        },
                        "antalAnstalldaKlass": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Sysselsettingsklasse.",
                          "example": "500-999"
                        },
                        "omsattningsklass": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Omsetningsklasse.",
                          "example": "1000-4999 Mkr"
                        },
                        "juridiskForm": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Juridisk form, f.eks. «AB», «HB», «EF».",
                          "example": "AB"
                        },
                        "registreringsdatum": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "1915-05-11"
                        },
                        "lan": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Läns-kode (2 siffer).",
                          "example": "14"
                        },
                        "lanNamn": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Lesbart läns-navn utledet fra `lan` der koden er kjent.",
                          "example": "Västra Götalands län"
                        },
                        "kommunkod": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Kommunkode (4 siffer).",
                          "example": "1480"
                        },
                        "status": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Status, f.eks. «Aktiv» / «Avregistrerad».",
                          "example": "Aktiv"
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "scb-foretagsregistret"
                      ],
                      "description": "Kildeindikator (konstant)."
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Når snapshotet ble hentet (ISO-8601).",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "foretag": {
                      "orgnr": "5560360793",
                      "namn": "Volvo Aktiebolag",
                      "sni": "29100",
                      "sniText": "Tillverkning av motorfordon",
                      "antalAnstalldaKlass": "500-999",
                      "omsattningsklass": "1000-4999 Mkr",
                      "juridiskForm": "AB",
                      "registreringsdatum": "1915-05-11",
                      "lan": "14",
                      "lanNamn": "Västra Götalands län",
                      "kommunkod": "1480",
                      "status": "Aktiv"
                    },
                    "source": "scb-foretagsregistret",
                    "fetchedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/scb-foretagsregistret/health": {
      "get": {
        "tags": [
          "connector:scb-foretagsregistret"
        ],
        "operationId": "get_api_connectors_scb_foretagsregistret_health",
        "summary": "GET /api/connectors/scb-foretagsregistret/health Default: statisk status (configured=false når SCB_F",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-foretagsregistret/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/scb-foretagsregistret/search": {
      "get": {
        "tags": [
          "connector:scb-foretagsregistret"
        ],
        "operationId": "get_api_connectors_scb_foretagsregistret_search",
        "summary": "GET /api/connectors/scb-foretagsregistret/search?sni=62&lan=01&limit=25 Søk i Företagsregistret på S",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-foretagsregistret/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorScbForetagsregistretSearch",
                  "additionalProperties": false,
                  "description": "Søketreff fra SCB Företagsregistret (filtrert på SNI/län/sysselsetting). Normaliserte svenske foretak + paginering.",
                  "required": [
                    "foretag",
                    "total",
                    "limit",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "foretag": {
                      "type": "array",
                      "description": "Normaliserte foretak (flat form, samme som company-oppslaget).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "orgnr"
                        ],
                        "properties": {
                          "orgnr": {
                            "type": "string",
                            "example": "5560360793"
                          },
                          "namn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Volvo Aktiebolag"
                          },
                          "sni": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "29100"
                          },
                          "sniText": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Tillverkning av motorfordon"
                          },
                          "antalAnstalldaKlass": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "500-999"
                          },
                          "omsattningsklass": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1000-4999 Mkr"
                          },
                          "juridiskForm": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "AB"
                          },
                          "registreringsdatum": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1915-05-11"
                          },
                          "lan": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "14"
                          },
                          "lanNamn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Västra Götalands län"
                          },
                          "kommunkod": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1480"
                          },
                          "status": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Aktiv"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream (kan overstige `foretag.length`).",
                      "example": 42
                    },
                    "limit": {
                      "type": "integer",
                      "example": 25
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "scb-foretagsregistret"
                      ]
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "foretag": [
                      {
                        "orgnr": "5560360793",
                        "namn": "Volvo Aktiebolag",
                        "sni": "29100",
                        "sniText": "Tillverkning av motorfordon",
                        "antalAnstalldaKlass": "500-999",
                        "omsattningsklass": "1000-4999 Mkr",
                        "juridiskForm": "AB",
                        "registreringsdatum": "1915-05-11",
                        "lan": "14",
                        "lanNamn": "Västra Götalands län",
                        "kommunkod": "1480",
                        "status": "Aktiv"
                      }
                    ],
                    "total": 42,
                    "limit": 25,
                    "source": "scb-foretagsregistret",
                    "fetchedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lan",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Län-kode",
            "example": "01"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Maks antall treff",
            "example": "20"
          },
          {
            "name": "sni",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "SNI-näringskode (minst én av sni/lan)",
            "example": "62010"
          }
        ]
      }
    },
    "/api/connectors/scb-geodata/health": {
      "get": {
        "tags": [
          "connector:scb-geodata"
        ],
        "operationId": "get_api_connectors_scb_geodata_health",
        "summary": "GET /api/connectors/scb-geodata/health (#1207).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-geodata/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/scb-geodata/layers": {
      "get": {
        "tags": [
          "connector:scb-geodata"
        ],
        "operationId": "get_api_connectors_scb_geodata_layers",
        "summary": "GET /api/connectors/scb-geodata/layers (#1207).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-geodata/layers/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/scb-geodata/region": {
      "get": {
        "tags": [
          "connector:scb-geodata"
        ],
        "operationId": "get_api_connectors_scb_geodata_region",
        "summary": "GET /api/connectors/scb-geodata/region?layer=&code= (#1207).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-geodata/region/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Regionkode i laget",
            "example": "1961R007"
          },
          {
            "name": "layer",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "regso",
                "deso",
                "tatorter"
              ]
            },
            "description": "Geografisk lag (SCB statistiske områder)",
            "example": "regso"
          }
        ]
      }
    },
    "/api/connectors/scb-geodata/regions": {
      "get": {
        "tags": [
          "connector:scb-geodata"
        ],
        "operationId": "get_api_connectors_scb_geodata_regions",
        "summary": "GET /api/connectors/scb-geodata/regions?layer=&bbox=&kommun=&limit= (#1207).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb-geodata/regions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "layer",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "regso",
                "deso",
                "tatorter"
              ]
            },
            "description": "Geografisk lag (SCB statistiske områder)",
            "example": "regso"
          }
        ]
      }
    },
    "/api/connectors/scb/health": {
      "get": {
        "tags": [
          "connector:scb"
        ],
        "operationId": "get_api_connectors_scb_health",
        "summary": "GET /api/connectors/scb/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/scb/tables": {
      "get": {
        "tags": [
          "connector:scb"
        ],
        "operationId": "get_api_connectors_scb_tables",
        "summary": "GET /api/connectors/scb/tables Paginert tabell-liste fra SCB Statistikdatabasen (PxWebApi v2).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb/tables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/scb/tables/{id}/data": {
      "post": {
        "tags": [
          "connector:scb"
        ],
        "operationId": "post_api_connectors_scb_tables__id__data",
        "summary": "POST /api/connectors/scb/tables/[id]/data Data-uttrekk fra SCB Statistikdatabasen (PxWebApi v2).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb/tables/[id]/data/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/scb/tables/{id}/metadata": {
      "get": {
        "tags": [
          "connector:scb"
        ],
        "operationId": "get_api_connectors_scb_tables__id__metadata",
        "summary": "GET /api/connectors/scb/tables/[id]/metadata Tabell-metadata (dimensjoner, kategorier, kodelistenavn",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/scb/tables/[id]/metadata/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sdir/company/{orgnr}": {
      "get": {
        "tags": [
          "connector:sdir"
        ],
        "operationId": "get_api_connectors_sdir_company__orgnr_",
        "summary": "GET /api/connectors/sdir/company/{orgnr} Hent rederiopplysninger fra Sjøfartsdirektoratets register.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sdir/company/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sdir/health": {
      "get": {
        "tags": [
          "connector:sdir"
        ],
        "operationId": "get_api_connectors_sdir_health",
        "summary": "GET /api/connectors/sdir/health Deep probe for SDIR (Sjøfartsdirektoratet) (#2515, #3077).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sdir/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sdir/ships": {
      "get": {
        "tags": [
          "connector:sdir"
        ],
        "operationId": "get_api_connectors_sdir_ships",
        "summary": "GET /api/connectors/sdir/ships?name=&imo=&mmsi=&flag=&shipType= Søk i Sjøfartsdirektoratets fartøyre",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sdir/ships/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "flag",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Flaggstat (ISO-landkode)",
            "example": "NO"
          },
          {
            "name": "imo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{7}$"
            },
            "description": "IMO-nummer (7 siffer)",
            "example": "9074729"
          },
          {
            "name": "mmsi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "MMSI-nummer (9 siffer)",
            "example": "257000000"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fartøysnavn (alias: q)",
            "example": "stril"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk på fartøysnavn (alias for name)",
            "example": "stril"
          },
          {
            "name": "shipType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fartøystype",
            "example": "Lasteskip"
          }
        ]
      }
    },
    "/api/connectors/sdir/ships/{imo}": {
      "get": {
        "tags": [
          "connector:sdir"
        ],
        "operationId": "get_api_connectors_sdir_ships__imo_",
        "summary": "GET /api/connectors/sdir/ships/{imo} Hent ett fartøy fra Sjøfartsdirektoratets fartøyregister på IMO",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sdir/ships/[imo]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "imo",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `imo` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/selskap/company": {
      "get": {
        "tags": [
          "connector:selskap"
        ],
        "operationId": "get_api_connectors_selskap_company",
        "summary": "GET /api/connectors/selskap/company?orgnr=NNNNNNNNN KETL Selskapsprofil — kanonisk enkeltoppslag (#2",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/selskap/company/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{9}$"
            },
            "description": "Organisasjonsnummer (9 siffer)",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/selskap/company/{orgnr}": {
      "get": {
        "tags": [
          "connector:selskap"
        ],
        "operationId": "get_api_connectors_selskap_company__orgnr_",
        "summary": "GET /api/connectors/selskap/company/{orgnr} Aggregert selskapsprofil med parallell fan-out til: 1.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/selskap/company/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSelskapCompany",
                  "additionalProperties": false,
                  "description": "Aggregert selskapsprofil for ett norsk orgnr på tvers av flere KETL-kilder: grunndata (Brreg), regnskap, styre/ledelse, LEI, sanksjons-screening og IPR. `sources` angir hvilke kilder som faktisk bidro.",
                  "required": [
                    "orgnr",
                    "navn",
                    "status",
                    "sources",
                    "checkedAt"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "example": "923609016"
                    },
                    "navn": {
                      "type": "string",
                      "example": "EQUINOR ASA"
                    },
                    "status": {
                      "type": "string",
                      "example": "aktiv"
                    },
                    "orgForm": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "ASA"
                    },
                    "stiftetIso": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "1972-07-01"
                    },
                    "ansatte": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 22000
                    },
                    "adresse": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Forretningsadresse (Brreg), alle underfelt valgfrie. Null hvis ukjent.",
                      "properties": {
                        "street": {
                          "type": "string"
                        },
                        "postalCode": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "municipality": {
                          "type": "string"
                        },
                        "municipalityCode": {
                          "type": "string"
                        },
                        "country": {
                          "type": "string"
                        }
                      }
                    },
                    "industryCode": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "required": [
                        "code",
                        "description"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "06.100"
                        },
                        "description": {
                          "type": "string",
                          "example": "Utvinning av råolje"
                        }
                      }
                    },
                    "financials": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Nøkkeltall fra brreg-regnskap. Null hvis regnskap mangler.",
                      "required": [
                        "år",
                        "valuta",
                        "driftsinntekter",
                        "aarsresultat",
                        "sumEgenkapital",
                        "sumGjeld",
                        "sumEiendeler",
                        "kilde"
                      ],
                      "properties": {
                        "år": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "example": 2024
                        },
                        "valuta": {
                          "type": "string",
                          "example": "NOK"
                        },
                        "driftsinntekter": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 1200000000
                        },
                        "aarsresultat": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 95000000
                        },
                        "sumEgenkapital": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 500000000
                        },
                        "sumGjeld": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 700000000
                        },
                        "sumEiendeler": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "example": 1200000000
                        },
                        "kilde": {
                          "type": "string",
                          "enum": [
                            "brreg-regnskap"
                          ]
                        }
                      }
                    },
                    "governance": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Styre/ledelse fra brreg-roller. Null hvis roller mangler. `ceo`/`chairman` er en rolle-innehaver eller null; `board` er en liste av rolle-innehavere. Rolle-innehaver: `{navn:string|null, rolle:string, rolleBeskrivelse:string, inntredelsesdato:string}`.",
                      "required": [
                        "ceo",
                        "chairman",
                        "board",
                        "kilde"
                      ],
                      "properties": {
                        "ceo": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "required": [
                            "navn",
                            "rolle",
                            "rolleBeskrivelse",
                            "inntredelsesdato"
                          ],
                          "properties": {
                            "navn": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "Anders Opedal"
                            },
                            "rolle": {
                              "type": "string",
                              "example": "DAGL"
                            },
                            "rolleBeskrivelse": {
                              "type": "string",
                              "example": "Daglig leder"
                            },
                            "inntredelsesdato": {
                              "type": "string",
                              "example": "2020-11-02"
                            }
                          }
                        },
                        "chairman": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "required": [
                            "navn",
                            "rolle",
                            "rolleBeskrivelse",
                            "inntredelsesdato"
                          ],
                          "properties": {
                            "navn": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "Jon Erik Reinhardsen"
                            },
                            "rolle": {
                              "type": "string",
                              "example": "LEDE"
                            },
                            "rolleBeskrivelse": {
                              "type": "string",
                              "example": "Styrets leder"
                            },
                            "inntredelsesdato": {
                              "type": "string",
                              "example": "2015-05-01"
                            }
                          }
                        },
                        "board": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "navn",
                              "rolle",
                              "rolleBeskrivelse",
                              "inntredelsesdato"
                            ],
                            "properties": {
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "rolle": {
                                "type": "string"
                              },
                              "rolleBeskrivelse": {
                                "type": "string"
                              },
                              "inntredelsesdato": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "kilde": {
                          "type": "string",
                          "enum": [
                            "brreg-roller"
                          ]
                        }
                      }
                    },
                    "lei": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "5967007LIEEXZXHKQU17"
                    },
                    "leiSource": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "gleif",
                        null
                      ]
                    },
                    "sanctions": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Sanksjons-screening (OpenSanctions). Null hvis ikke screenet.",
                      "required": [
                        "screened",
                        "matched",
                        "hitCount",
                        "kilde",
                        "screenedAt"
                      ],
                      "properties": {
                        "screened": {
                          "type": "boolean",
                          "enum": [
                            true
                          ]
                        },
                        "matched": {
                          "type": "boolean",
                          "example": false
                        },
                        "hitCount": {
                          "type": "integer",
                          "example": 0
                        },
                        "kilde": {
                          "type": "string",
                          "enum": [
                            "opensanctions"
                          ]
                        },
                        "screenedAt": {
                          "type": "string",
                          "example": "2026-07-03"
                        }
                      }
                    },
                    "ipr": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "IPR-oppsummering (Patentstyret). Null hvis ikke slått opp.",
                      "required": [
                        "patents",
                        "kilde"
                      ],
                      "properties": {
                        "patents": {
                          "type": "integer",
                          "example": 12
                        },
                        "kilde": {
                          "type": "string",
                          "enum": [
                            "patentstyret"
                          ]
                        }
                      }
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "brreg",
                          "brreg-regnskap",
                          "brreg-roller",
                          "gleif",
                          "opensanctions",
                          "patentstyret"
                        ]
                      },
                      "description": "Hvilke kilder som faktisk bidro til profilen.",
                      "example": [
                        "brreg",
                        "brreg-regnskap",
                        "brreg-roller"
                      ]
                    },
                    "checkedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "navn": "EQUINOR ASA",
                    "status": "aktiv",
                    "orgForm": "ASA",
                    "stiftetIso": "1972-07-01",
                    "ansatte": 22000,
                    "adresse": {
                      "postalCode": "4035",
                      "city": "STAVANGER",
                      "municipality": "STAVANGER",
                      "country": "Norge"
                    },
                    "industryCode": {
                      "code": "06.100",
                      "description": "Utvinning av råolje"
                    },
                    "financials": {
                      "år": 2024,
                      "valuta": "NOK",
                      "driftsinntekter": 1200000000,
                      "aarsresultat": 95000000,
                      "sumEgenkapital": 500000000,
                      "sumGjeld": 700000000,
                      "sumEiendeler": 1200000000,
                      "kilde": "brreg-regnskap"
                    },
                    "governance": {
                      "ceo": {
                        "navn": "Anders Opedal",
                        "rolle": "DAGL",
                        "rolleBeskrivelse": "Daglig leder",
                        "inntredelsesdato": "2020-11-02"
                      },
                      "chairman": {
                        "navn": "Jon Erik Reinhardsen",
                        "rolle": "LEDE",
                        "rolleBeskrivelse": "Styrets leder",
                        "inntredelsesdato": "2015-05-01"
                      },
                      "board": [],
                      "kilde": "brreg-roller"
                    },
                    "lei": "5967007LIEEXZXHKQU17",
                    "leiSource": "gleif",
                    "sanctions": {
                      "screened": true,
                      "matched": false,
                      "hitCount": 0,
                      "kilde": "opensanctions",
                      "screenedAt": "2026-07-03"
                    },
                    "ipr": {
                      "patents": 12,
                      "kilde": "patentstyret"
                    },
                    "sources": [
                      "brreg",
                      "brreg-regnskap",
                      "brreg-roller",
                      "gleif",
                      "opensanctions",
                      "patentstyret"
                    ],
                    "checkedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/selskap/health": {
      "get": {
        "tags": [
          "connector:selskap"
        ],
        "operationId": "get_api_connectors_selskap_health",
        "summary": "GET /api/connectors/selskap/health Liveness-check for KETL Selskapsprofil-connectoren (#2711).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/selskap/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/selskap/search": {
      "get": {
        "tags": [
          "connector:selskap"
        ],
        "operationId": "get_api_connectors_selskap_search",
        "summary": "GET /api/connectors/selskap/search?q=&limit=&fra= KETL Selskapsprofil — fri-tekst selskapssøk (#2755",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/selskap/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSelskapSearch",
                  "additionalProperties": false,
                  "description": "Kanonisk selskapssøk (per default mot norsk Brreg). Paginerte treff i felles `CanonicalCompany`-form (nordisk-kompatibel), med status- og adressefelt.",
                  "required": [
                    "query",
                    "total",
                    "limit",
                    "fra",
                    "count",
                    "results"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "equinor"
                    },
                    "total": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream.",
                      "example": 3
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "fra": {
                      "type": "integer",
                      "description": "Offset.",
                      "example": 0
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall treff i denne siden.",
                      "example": 3
                    },
                    "degraded": {
                      "type": "boolean",
                      "description": "Til stede kun når fallback-kilde ble brukt."
                    },
                    "note": {
                      "type": "string",
                      "description": "Til stede kun når fallback-kilde ble brukt."
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "orgnr",
                          "nationalIdType",
                          "country",
                          "navn",
                          "mvaNavn",
                          "selskapsform",
                          "antallAnsatte",
                          "stiftetIso",
                          "forretningsadresse",
                          "postadresse",
                          "kontakt",
                          "naeringskode",
                          "status",
                          "konkurs",
                          "underAvvikling",
                          "slettetIso",
                          "sistHentetIso",
                          "source",
                          "apiVersion"
                        ],
                        "properties": {
                          "orgnr": {
                            "type": "string",
                            "example": "923609016"
                          },
                          "nationalIdType": {
                            "type": "string",
                            "enum": [
                              "ORGNR",
                              "CVR",
                              "ORGNR_SE",
                              "YTJ",
                              "KENNITALA"
                            ]
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "NO",
                              "SE",
                              "DK",
                              "FI",
                              "IS"
                            ]
                          },
                          "navn": {
                            "type": "string",
                            "example": "EQUINOR ASA"
                          },
                          "mvaNavn": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "selskapsform": {
                            "type": "string",
                            "enum": [
                              "AS",
                              "ASA",
                              "ENK",
                              "ANS",
                              "SA",
                              "IKS",
                              "KF",
                              "STI",
                              "FLI",
                              "ANNET"
                            ]
                          },
                          "antallAnsatte": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 22000
                          },
                          "stiftetIso": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "1972-07-01"
                          },
                          "forretningsadresse": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "required": [
                              "adresse",
                              "postnummer",
                              "poststed",
                              "kommunenummer",
                              "land"
                            ],
                            "properties": {
                              "adresse": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "Forusbeen 50"
                                ]
                              },
                              "postnummer": {
                                "type": "string",
                                "example": "4035"
                              },
                              "poststed": {
                                "type": "string",
                                "example": "STAVANGER"
                              },
                              "kommunenummer": {
                                "type": "string",
                                "example": "1103"
                              },
                              "land": {
                                "type": "string",
                                "enum": [
                                  "NO",
                                  "SE",
                                  "DK",
                                  "FI",
                                  "IS"
                                ]
                              }
                            }
                          },
                          "postadresse": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "required": [
                              "adresse",
                              "postnummer",
                              "poststed",
                              "kommunenummer",
                              "land"
                            ],
                            "properties": {
                              "adresse": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "postnummer": {
                                "type": "string"
                              },
                              "poststed": {
                                "type": "string"
                              },
                              "kommunenummer": {
                                "type": "string"
                              },
                              "land": {
                                "type": "string",
                                "enum": [
                                  "NO",
                                  "SE",
                                  "DK",
                                  "FI",
                                  "IS"
                                ]
                              }
                            }
                          },
                          "kontakt": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "epost",
                              "telefon",
                              "hjemmeside"
                            ],
                            "properties": {
                              "epost": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "telefon": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "hjemmeside": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "https://www.equinor.com"
                              }
                            }
                          },
                          "naeringskode": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "06.100"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "aktiv",
                              "konkurs",
                              "under_avvikling",
                              "slettet"
                            ]
                          },
                          "konkurs": {
                            "type": "boolean",
                            "example": false
                          },
                          "underAvvikling": {
                            "type": "boolean",
                            "example": false
                          },
                          "slettetIso": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sistHentetIso": {
                            "type": "string",
                            "example": "2026-07-03T09:15:00.000Z"
                          },
                          "source": {
                            "type": "string",
                            "example": "selskap:brreg"
                          },
                          "apiVersion": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "equinor",
                    "total": 1,
                    "limit": 20,
                    "fra": 0,
                    "count": 1,
                    "results": [
                      {
                        "orgnr": "923609016",
                        "nationalIdType": "ORGNR",
                        "country": "NO",
                        "navn": "EQUINOR ASA",
                        "mvaNavn": null,
                        "selskapsform": "ASA",
                        "antallAnsatte": 22000,
                        "stiftetIso": "1972-07-01",
                        "forretningsadresse": {
                          "adresse": [
                            "Forusbeen 50"
                          ],
                          "postnummer": "4035",
                          "poststed": "STAVANGER",
                          "kommunenummer": "1103",
                          "land": "NO"
                        },
                        "postadresse": null,
                        "kontakt": {
                          "epost": null,
                          "telefon": null,
                          "hjemmeside": "https://www.equinor.com"
                        },
                        "naeringskode": "06.100",
                        "status": "aktiv",
                        "konkurs": false,
                        "underAvvikling": false,
                        "slettetIso": null,
                        "sistHentetIso": "2026-07-03T09:15:00.000Z",
                        "source": "selskap:brreg",
                        "apiVersion": null
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Antall treff (1–50, default 20)",
            "example": "20"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Fri-tekst søkestreng eller 9-sifret orgnr",
            "example": "Equinor"
          }
        ]
      }
    },
    "/api/connectors/sikt/cristin/institutions": {
      "get": {
        "tags": [
          "connector:sikt"
        ],
        "operationId": "get_api_connectors_sikt_cristin_institutions",
        "summary": "GET /api/connectors/sikt/cristin/institutions CRISTIN institusjonsliste (q, perPage, page).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sikt/cristin/institutions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSiktCristinInstitutions",
                  "additionalProperties": false,
                  "description": "Paginert liste over forskningsinstitusjoner i Cristin: navn, akronym, land og URL.",
                  "required": [
                    "items",
                    "total",
                    "page",
                    "perPage"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "acronym",
                          "country",
                          "url"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "185"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Universitetet i Oslo"
                          },
                          "acronym": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "UiO"
                          },
                          "country": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NO"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://api.cristin.no/v2/institutions/185"
                          }
                        }
                      }
                    },
                    "total": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Fra upstream `X-Total-Count`; null hvis fraværende.",
                      "example": 1200
                    },
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "perPage": {
                      "type": "integer",
                      "example": 25
                    }
                  },
                  "example": {
                    "items": [
                      {
                        "id": "185",
                        "name": "Universitetet i Oslo",
                        "acronym": "UiO",
                        "country": "NO",
                        "url": "https://api.cristin.no/v2/institutions/185"
                      }
                    ],
                    "total": 1200,
                    "page": 1,
                    "perPage": 25
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sikt/cristin/projects": {
      "get": {
        "tags": [
          "connector:sikt"
        ],
        "operationId": "get_api_connectors_sikt_cristin_projects",
        "summary": "GET /api/connectors/sikt/cristin/projects CRISTIN forskningsprosjekter (q, institution, perPage, pag",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sikt/cristin/projects/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sikt/cristin/publications": {
      "get": {
        "tags": [
          "connector:sikt"
        ],
        "operationId": "get_api_connectors_sikt_cristin_publications",
        "summary": "GET /api/connectors/sikt/cristin/publications CRISTIN forskningsresultater/publikasjoner (q, perPage",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sikt/cristin/publications/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sikt/health": {
      "get": {
        "tags": [
          "connector:sikt"
        ],
        "operationId": "get_api_connectors_sikt_health",
        "summary": "GET /api/connectors/sikt/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sikt/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sikt/nva/publications": {
      "get": {
        "tags": [
          "connector:sikt"
        ],
        "operationId": "get_api_connectors_sikt_nva_publications",
        "summary": "GET /api/connectors/sikt/nva/publications NVA (Nasjonalt vitenarkiv) publikasjonssøk (q, results).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sikt/nva/publications/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteetaten-aksjonaer/health": {
      "get": {
        "tags": [
          "connector:skatteetaten-aksjonaer"
        ],
        "operationId": "get_api_connectors_skatteetaten_aksjonaer_health",
        "summary": "GET /api/connectors/skatteetaten-aksjonaer/health Default: status fra `handleSkatteetatenAksjonaerHe",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten-aksjonaer/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteetaten-aksjonaer/shareholders/{orgnr}": {
      "get": {
        "tags": [
          "connector:skatteetaten-aksjonaer"
        ],
        "operationId": "get_api_connectors_skatteetaten_aksjonaer_shareholders__orgnr_",
        "summary": "GET /api/connectors/skatteetaten-aksjonaer/shareholders/[orgnr]?year=YYYY Aksjeeiere i et norsk AS p",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten-aksjonaer/shareholders/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSkatteetatenAksjonaerShareholders",
                  "additionalProperties": false,
                  "description": "Normalisert aksjebeholdning for ett norsk AS per inntektsår, fra Skatteetatens Aksjonærregister (rapportert per 31.12.). Inneholder totaler og en rad per aksjeeier med aksjeklasse og eierandel.",
                  "required": [
                    "orgNr",
                    "companyName",
                    "incomeYear",
                    "totalShares",
                    "shareholderCount",
                    "shareholders",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "orgNr": {
                      "type": "string",
                      "description": "Norsk organisasjonsnummer (9 siffer).",
                      "example": "923609016"
                    },
                    "companyName": {
                      "type": "string",
                      "example": "EQUINOR ASA"
                    },
                    "incomeYear": {
                      "type": "integer",
                      "description": "Inntektsåret beholdningen gjelder.",
                      "example": 2024
                    },
                    "totalShares": {
                      "type": "number",
                      "description": "Totalt antall aksjer i selskapet for året.",
                      "example": 3187500000
                    },
                    "shareholderCount": {
                      "type": "integer",
                      "description": "Antall aksjeeiere i beholdningen.",
                      "example": 4
                    },
                    "shareholders": {
                      "type": "array",
                      "description": "Én rad per aksjeeier.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "shareClass",
                          "shares",
                          "ownershipPercent"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "STATEN VED NÆRINGS- OG FISKERIDEPARTEMENTET"
                          },
                          "identifier": {
                            "type": "string",
                            "description": "Fødselsår eller orgnr — kan mangle for anonymiserte rader.",
                            "example": "972417874"
                          },
                          "shareClass": {
                            "type": "string",
                            "example": "Ordinære aksjer"
                          },
                          "shares": {
                            "type": "number",
                            "example": 2138896895
                          },
                          "ownershipPercent": {
                            "type": "number",
                            "description": "Eierandel i prosent (0–100), avrundet til 4 desimaler.",
                            "example": 67
                          },
                          "postalArea": {
                            "type": "string",
                            "example": "OSLO"
                          },
                          "countryCode": {
                            "type": "string",
                            "example": "NO"
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Skatteetaten Aksjonærregisteret"
                      ]
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "orgNr": "923609016",
                    "companyName": "EQUINOR ASA",
                    "incomeYear": 2024,
                    "totalShares": 3187500000,
                    "shareholderCount": 2,
                    "shareholders": [
                      {
                        "name": "STATEN VED NÆRINGS- OG FISKERIDEPARTEMENTET",
                        "identifier": "972417874",
                        "shareClass": "Ordinære aksjer",
                        "shares": 2138896895,
                        "ownershipPercent": 67,
                        "postalArea": "OSLO",
                        "countryCode": "NO"
                      },
                      {
                        "name": "FOLKETRYGDFONDET",
                        "identifier": "971524960",
                        "shareClass": "Ordinære aksjer",
                        "shares": 111562500,
                        "ownershipPercent": 3.5,
                        "postalArea": "OSLO",
                        "countryCode": "NO"
                      }
                    ],
                    "source": "Skatteetaten Aksjonærregisteret",
                    "fetchedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Inntektsår (rapportert per 31.12.). Default: siste tilgjengelige år.",
            "example": "2023"
          }
        ]
      }
    },
    "/api/connectors/skatteetaten-mva-manntall/health": {
      "get": {
        "tags": [
          "connector:skatteetaten-mva-manntall"
        ],
        "operationId": "get_api_connectors_skatteetaten_mva_manntall_health",
        "summary": "GET /api/connectors/skatteetaten-mva-manntall/health Status for MVA-manntall-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten-mva-manntall/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteetaten-mva-manntall/lookup/{orgnr}": {
      "get": {
        "tags": [
          "connector:skatteetaten-mva-manntall"
        ],
        "operationId": "get_api_connectors_skatteetaten_mva_manntall_lookup__orgnr_",
        "summary": "GET /api/connectors/skatteetaten-mva-manntall/lookup/[orgnr] MVA-registreringsstatus for et norsk or",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten-mva-manntall/lookup/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSkatteetatenMvaManntallLookup",
                  "additionalProperties": false,
                  "description": "MVA-registreringsstatus for ett norsk organisasjonsnummer, fra Skatteetatens MVA-manntall (CSV-uttrekk) eller Brreg-fallback. `registered`/`status` er alltid satt; dato-/kategori-felt finnes kun for den autoritative CSV-kilden.",
                  "required": [
                    "orgnr",
                    "registered",
                    "status",
                    "snapshotDate",
                    "source"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "description": "Norsk organisasjonsnummer (9 siffer).",
                      "example": "923609016"
                    },
                    "registered": {
                      "type": "boolean",
                      "description": "Aktiv MVA-registrering per `snapshotDate`.",
                      "example": true
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "deregistered",
                        "unknown"
                      ],
                      "description": "Status mappet til diskrete tilstander."
                    },
                    "registrationDate": {
                      "type": "string",
                      "description": "ISO YYYY-MM-DD. Finnes kun for CSV-kilden.",
                      "example": "1995-01-01"
                    },
                    "deregistrationDate": {
                      "type": "string",
                      "description": "ISO YYYY-MM-DD. Utelates hvis fortsatt aktiv.",
                      "example": "2020-06-30"
                    },
                    "category": {
                      "type": "string",
                      "description": "Skatteetaten-kategori (`Ordinært`, `Felles` osv.).",
                      "example": "Ordinært"
                    },
                    "companyName": {
                      "type": "string",
                      "description": "Selskapsnavn fra raden (best-effort — kan mangle).",
                      "example": "EQUINOR ASA"
                    },
                    "snapshotDate": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Når snapshot ble hentet (ISO datetime). For CSV-uttrekk er dette lastetidspunktet; for Brreg-fallback er det nå-tidspunktet.",
                      "example": "2026-07-01T00:00:00.000Z"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Skatteetaten MVA-manntall",
                        "Brreg Enhetsregisteret (mva-fallback)"
                      ],
                      "description": "Kilde — Brreg er fallback uten dato-felter."
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "registered": true,
                    "status": "active",
                    "registrationDate": "1995-01-01",
                    "category": "Ordinært",
                    "companyName": "EQUINOR ASA",
                    "snapshotDate": "2026-07-01T00:00:00.000Z",
                    "source": "Skatteetaten MVA-manntall"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/skatteetaten/arrears/{orgnr}": {
      "get": {
        "tags": [
          "connector:skatteetaten"
        ],
        "operationId": "get_api_connectors_skatteetaten_arrears__orgnr_",
        "summary": "GET /api/connectors/skatteetaten/arrears/[orgnr] Utestående skatterestanser for en virksomhet.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten/arrears/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSkatteetatenArrears",
                  "additionalProperties": false,
                  "description": "Normaliserte skatterestanser (utestående skattekrav) for én virksomhet fra Skatteetatens Restanser-API.",
                  "required": [
                    "identifier",
                    "totalOutstanding",
                    "arrears",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "identifier": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummer (9 siffer, ikke-siffer fjernet).",
                      "example": "923609016"
                    },
                    "totalOutstanding": {
                      "type": "number",
                      "description": "Sum av alle restanse-beløp (NOK). 0 ved ingen utestående krav.",
                      "example": 125000
                    },
                    "arrears": {
                      "type": "array",
                      "description": "Liste over utestående skattekrav (tom ved ingen restanser).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "claimType",
                          "amount"
                        ],
                        "description": "Én skatterestanse-post.",
                        "properties": {
                          "claimType": {
                            "type": "string",
                            "description": "Kravtype (fra `kravtype`; \"ukjent\" hvis upstream mangler felt).",
                            "example": "Merverdiavgift"
                          },
                          "amount": {
                            "type": "number",
                            "description": "Beløp for kravet (NOK).",
                            "example": 75000
                          },
                          "dueDate": {
                            "type": "string",
                            "description": "Forfallsdato (ISO-8601). Utelatt hvis upstream ikke oppgir den.",
                            "example": "2025-03-10"
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Skatteetaten Restanser"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "Skatteetaten Restanser"
                    },
                    "fetchedAt": {
                      "type": "string",
                      "description": "Tidspunkt for henting (ISO-8601 timestamp).",
                      "example": "2026-06-24T08:00:00.000Z"
                    }
                  },
                  "example": {
                    "identifier": "923609016",
                    "totalOutstanding": 125000,
                    "arrears": [
                      {
                        "claimType": "Merverdiavgift",
                        "amount": 75000,
                        "dueDate": "2025-03-10"
                      },
                      {
                        "claimType": "Arbeidsgiveravgift",
                        "amount": 50000,
                        "dueDate": "2025-04-15"
                      }
                    ],
                    "source": "Skatteetaten Restanser",
                    "fetchedAt": "2026-06-24T08:00:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/skatteetaten/health": {
      "get": {
        "tags": [
          "connector:skatteetaten"
        ],
        "operationId": "get_api_connectors_skatteetaten_health",
        "summary": "GET /api/connectors/skatteetaten/health Status for Skatteetaten-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteetaten/tax-summary/{orgnr}": {
      "get": {
        "tags": [
          "connector:skatteetaten"
        ],
        "operationId": "get_api_connectors_skatteetaten_tax_summary__orgnr_",
        "summary": "GET /api/connectors/skatteetaten/tax-summary/[orgnr]?year=YYYY Summert skattegrunnlag (inntekt, form",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteetaten/tax-summary/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSkatteetatenTaxSummary",
                  "additionalProperties": false,
                  "description": "Normalisert summert skattegrunnlag (aggregert inntekt, formue og beregnet skatt) for en virksomhet per inntektsår, fra Skatteetatens Maskinporten-API.",
                  "required": [
                    "identifier",
                    "taxYear",
                    "categories",
                    "source",
                    "fetchedAt"
                  ],
                  "properties": {
                    "identifier": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummer (9 siffer, ikke-numeriske tegn fjernet).",
                      "example": "923609016"
                    },
                    "taxYear": {
                      "type": "integer",
                      "minimum": 2016,
                      "description": "Inntektsår (skatteår) datasettet gjelder.",
                      "example": 2024
                    },
                    "taxableIncome": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Heuristisk gjenkjent skattepliktig/alminnelig inntekt (NOK). Utelatt når ingen inntektskategori matcher.",
                      "example": 1250000
                    },
                    "taxableWealth": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Heuristisk gjenkjent skattepliktig nettoformue (NOK). Utelatt når ingen formueskategori matcher.",
                      "example": 4200000
                    },
                    "totalTax": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Heuristisk gjenkjent beregnet/fastsatt skatt (NOK). Utelatt når ingen skattekategori matcher.",
                      "example": 312500
                    },
                    "categories": {
                      "type": "array",
                      "description": "Alle skattegrunnlag-linjer (tom hvis upstream ikke leverer poster). Full liste eksponeres for konsumenter som trenger detaljerte felt.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "value"
                        ],
                        "description": "Én skattekategori-linje fra summert skattegrunnlag.",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Skatteetatens tekniske navn på kategorien (faller tilbake til `kategori`, ellers `\"ukjent\"`).",
                            "example": "alminneligInntekt"
                          },
                          "value": {
                            "type": "number",
                            "description": "Beløp for kategorien (NOK).",
                            "example": 1250000
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "Skatteetaten Summert skattegrunnlag"
                      ],
                      "description": "Proveniens (#74 explainability) — fast kilde-streng.",
                      "example": "Skatteetaten Summert skattegrunnlag"
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Tidspunkt for henting/normalisering (ISO-8601 UTC).",
                      "example": "2026-06-24T10:15:00.000Z"
                    }
                  },
                  "example": {
                    "identifier": "923609016",
                    "taxYear": 2024,
                    "taxableIncome": 1250000,
                    "taxableWealth": 4200000,
                    "totalTax": 312500,
                    "categories": [
                      {
                        "name": "alminneligInntekt",
                        "value": 1250000
                      },
                      {
                        "name": "nettoformue",
                        "value": 4200000
                      },
                      {
                        "name": "beregnetSkatt",
                        "value": 312500
                      }
                    ],
                    "source": "Skatteetaten Summert skattegrunnlag",
                    "fetchedAt": "2026-06-24T10:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/skatteverket-se/health": {
      "get": {
        "tags": [
          "connector:skatteverket-se"
        ],
        "operationId": "get_api_connectors_skatteverket_se_health",
        "summary": "GET /api/connectors/skatteverket-se/health Statisk status for Skatteverket-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteverket-se/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteverket-se/samordningsnummer/health": {
      "get": {
        "tags": [
          "connector:skatteverket-se"
        ],
        "operationId": "get_api_connectors_skatteverket_se_samordningsnummer_health",
        "summary": "GET /api/connectors/skatteverket-se/samordningsnummer/health (#2640) Status for samordningsnummer-AP",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteverket-se/samordningsnummer/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteverket-se/samordningsnummer/request": {
      "post": {
        "tags": [
          "connector:skatteverket-se"
        ],
        "operationId": "post_api_connectors_skatteverket_se_samordningsnummer_request",
        "summary": "POST /api/connectors/skatteverket-se/samordningsnummer/request (#2640) Asynkron søknad om samordning",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteverket-se/samordningsnummer/request/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/skatteverket-se/samordningsnummer/status/{requestId}": {
      "get": {
        "tags": [
          "connector:skatteverket-se"
        ],
        "operationId": "get_api_connectors_skatteverket_se_samordningsnummer_status__requestId_",
        "summary": "GET /api/connectors/skatteverket-se/samordningsnummer/status/{requestId} (#2640) Status-oppslag for ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteverket-se/samordningsnummer/status/[requestId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `requestId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/skatteverket-se/tax-registration": {
      "get": {
        "tags": [
          "connector:skatteverket-se"
        ],
        "operationId": "get_api_connectors_skatteverket_se_tax_registration",
        "summary": "GET /api/connectors/skatteverket-se/tax-registration?orgnr= F-skatt-, MVA- og arbeidsgiver-status fo",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/skatteverket-se/tax-registration/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{6,12}$"
            },
            "description": "Svensk org.nr/personnr",
            "example": "5560360793"
          }
        ]
      }
    },
    "/api/connectors/smhi/forecast": {
      "get": {
        "tags": [
          "connector:smhi"
        ],
        "operationId": "get_api_connectors_smhi_forecast",
        "summary": "GET /api/connectors/smhi/forecast",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/smhi/forecast/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSmhiForecast",
                  "additionalProperties": false,
                  "description": "Punktprognose fra SMHI for gitt lat/lon. Rota ER prognose-objektet (ingen wrapper).",
                  "required": [
                    "createdTime",
                    "geometry",
                    "timeSeries"
                  ],
                  "properties": {
                    "createdTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Tidspunkt prognosen ble laget (ISO 8601, fra SMHI `createdTime`).",
                      "example": "2026-07-01T06:00:00Z"
                    },
                    "geometry": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Punktgeometri (GeoJSON Point).",
                      "required": [
                        "type",
                        "coordinates"
                      ],
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "Point"
                          ],
                          "example": "Point"
                        },
                        "coordinates": {
                          "type": "array",
                          "description": "[lengdegrad, breddegrad] (WGS84).",
                          "minItems": 2,
                          "maxItems": 2,
                          "items": {
                            "type": "number"
                          },
                          "example": [
                            10.75,
                            59.91
                          ]
                        }
                      }
                    },
                    "timeSeries": {
                      "type": "array",
                      "description": "Prognose per tidssteg.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Ett tidssteg.",
                        "required": [
                          "time",
                          "data"
                        ],
                        "properties": {
                          "time": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Gyldighetstidspunkt (ISO 8601).",
                            "example": "2026-07-01T12:00:00Z"
                          },
                          "data": {
                            "type": "object",
                            "description": "Parameterverdier keyet på fullt parameternavn (air_temperature, wind_speed, precipitation_amount_mean, …). Verdiene er numeriske.",
                            "additionalProperties": {
                              "type": "number"
                            },
                            "example": {
                              "air_temperature": 18.4,
                              "wind_speed": 3.2,
                              "precipitation_amount_mean": 0
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "createdTime": "2026-07-01T06:00:00Z",
                    "geometry": {
                      "type": "Point",
                      "coordinates": [
                        10.75,
                        59.91
                      ]
                    },
                    "timeSeries": [
                      {
                        "time": "2026-07-01T12:00:00Z",
                        "data": {
                          "air_temperature": 18.4,
                          "wind_speed": 3.2,
                          "precipitation_amount_mean": 0
                        }
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Breddegrad (WGS84)",
            "example": "59.33"
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "description": "Lengdegrad (WGS84)",
            "example": "18.07"
          }
        ]
      }
    },
    "/api/connectors/smhi/health": {
      "get": {
        "tags": [
          "connector:smhi"
        ],
        "operationId": "get_api_connectors_smhi_health",
        "summary": "GET /api/connectors/smhi/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/smhi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/smhi/observations/{parameter}/{stationId}": {
      "get": {
        "tags": [
          "connector:smhi"
        ],
        "operationId": "get_api_connectors_smhi_observations__parameter___stationId_",
        "summary": "GET /api/connectors/smhi/observations/{parameter}/{stationId}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/smhi/observations/[parameter]/[stationId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSmhiObservations",
                  "additionalProperties": false,
                  "description": "Tidsserie av observasjoner for én stasjon og én parameter fra SMHI Öppna data, for den valgte perioden.",
                  "required": [
                    "observations"
                  ],
                  "properties": {
                    "observations": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Observasjonsserien med metadata.",
                      "required": [
                        "stationId",
                        "stationName",
                        "parameter",
                        "parameterName",
                        "period",
                        "values"
                      ],
                      "properties": {
                        "stationId": {
                          "type": "integer",
                          "description": "Stasjons-ID.",
                          "example": 159880
                        },
                        "stationName": {
                          "type": "string",
                          "description": "Stasjonsnavn (tom streng hvis SMHI utelater).",
                          "example": "Falsterbo A"
                        },
                        "parameter": {
                          "type": "integer",
                          "description": "Parameter-ID.",
                          "example": 1
                        },
                        "parameterName": {
                          "type": "string",
                          "description": "Parameternavn (tom streng hvis SMHI utelater).",
                          "example": "Lufttemperatur"
                        },
                        "period": {
                          "type": "string",
                          "description": "Valgt periode.",
                          "enum": [
                            "latest-hour",
                            "latest-day",
                            "latest-months",
                            "corrected-archive"
                          ],
                          "example": "latest-months"
                        },
                        "values": {
                          "type": "array",
                          "description": "Måleverdier i tidsrekkefølge (tom hvis ingen data).",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "description": "Én observasjon.",
                            "required": [
                              "date",
                              "value",
                              "quality"
                            ],
                            "properties": {
                              "date": {
                                "type": "integer",
                                "description": "Tidspunkt for målingen (epoch millisekunder).",
                                "example": 1704067200000
                              },
                              "value": {
                                "type": "string",
                                "description": "Måleverdi som tekst (SMHI leverer den som streng).",
                                "example": "3.2"
                              },
                              "quality": {
                                "type": "string",
                                "description": "SMHI-kvalitetskode (f.eks. G=godkjent, Y, R).",
                                "example": "G"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "observations": {
                      "stationId": 159880,
                      "stationName": "Falsterbo A",
                      "parameter": 1,
                      "parameterName": "Lufttemperatur",
                      "period": "latest-months",
                      "values": [
                        {
                          "date": 1704067200000,
                          "value": "3.2",
                          "quality": "G"
                        },
                        {
                          "date": 1704070800000,
                          "value": "3.0",
                          "quality": "G"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "parameter",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `parameter` — se connector-dokumentasjon for format."
          },
          {
            "name": "stationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `stationId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/smhi/parameters": {
      "get": {
        "tags": [
          "connector:smhi"
        ],
        "operationId": "get_api_connectors_smhi_parameters",
        "summary": "GET /api/connectors/smhi/parameters",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/smhi/parameters/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSmhiParameters",
                  "additionalProperties": false,
                  "description": "Meteorologiske måleparametre fra SMHI Öppna data (metobs). Hver parameter identifiseres av en numerisk `key` som brukes videre i stasjons- og observasjonsoppslag.",
                  "required": [
                    "parameters"
                  ],
                  "properties": {
                    "parameters": {
                      "type": "array",
                      "description": "Liste av tilgjengelige måleparametre (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én SMHI-måleparameter.",
                        "required": [
                          "key",
                          "name",
                          "summary",
                          "unit"
                        ],
                        "properties": {
                          "key": {
                            "type": "integer",
                            "description": "Numerisk parameter-ID (brukes i stations/observations).",
                            "example": 1
                          },
                          "name": {
                            "type": "string",
                            "description": "Parameternavn (fra SMHI `title`).",
                            "example": "Lufttemperatur"
                          },
                          "summary": {
                            "type": "string",
                            "description": "Kort beskrivelse av parameteren.",
                            "example": "momentanvärde, 1 gång/tim"
                          },
                          "unit": {
                            "type": "string",
                            "description": "Måleenhet. Tom streng når SMHI ikke oppgir enhet på katalog-nivå.",
                            "example": ""
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "parameters": [
                      {
                        "key": 1,
                        "name": "Lufttemperatur",
                        "summary": "momentanvärde, 1 gång/tim",
                        "unit": ""
                      },
                      {
                        "key": 21,
                        "name": "Byvind",
                        "summary": "max, 1 gång/tim",
                        "unit": ""
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/smhi/stations/{parameter}": {
      "get": {
        "tags": [
          "connector:smhi"
        ],
        "operationId": "get_api_connectors_smhi_stations__parameter_",
        "summary": "GET /api/connectors/smhi/stations/{parameter}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/smhi/stations/[parameter]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSmhiStations",
                  "additionalProperties": false,
                  "description": "Målestasjoner som rapporterer den forespurte parameteren, fra SMHI Öppna data. `parameter` ekkoer parameter-ID-en fra path-en.",
                  "required": [
                    "parameter",
                    "stations"
                  ],
                  "properties": {
                    "parameter": {
                      "type": "integer",
                      "description": "Parameter-ID (ekko av path-parameteret `{parameter}`).",
                      "example": 1
                    },
                    "stations": {
                      "type": "array",
                      "description": "Stasjoner som måler parameteren (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én SMHI-målestasjon.",
                        "required": [
                          "id",
                          "name",
                          "owner",
                          "ownerCategory",
                          "measuringStations",
                          "active",
                          "from",
                          "to",
                          "latitude",
                          "longitude",
                          "height"
                        ],
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "Stasjons-ID (brukes i observasjonsoppslag).",
                            "example": 159880
                          },
                          "name": {
                            "type": "string",
                            "example": "Falsterbo A"
                          },
                          "owner": {
                            "type": "string",
                            "description": "Stasjonseier.",
                            "example": "SMHI"
                          },
                          "ownerCategory": {
                            "type": "string",
                            "description": "Eierkategori.",
                            "example": "CLIMATE"
                          },
                          "measuringStations": {
                            "type": "string",
                            "description": "Måletype/-klasse (SMHI `measuringStations`).",
                            "example": "CORE"
                          },
                          "active": {
                            "type": "boolean",
                            "description": "Om stasjonen er aktiv.",
                            "example": true
                          },
                          "from": {
                            "type": "integer",
                            "description": "Startdato for målingene (epoch millisekunder).",
                            "example": 1420070400000
                          },
                          "to": {
                            "type": "integer",
                            "description": "Sluttdato/siste måling (epoch millisekunder).",
                            "example": 1704067200000
                          },
                          "latitude": {
                            "type": "number",
                            "description": "Breddegrad (WGS84).",
                            "example": 55.3837
                          },
                          "longitude": {
                            "type": "number",
                            "description": "Lengdegrad (WGS84).",
                            "example": 12.8163
                          },
                          "height": {
                            "type": "number",
                            "description": "Stasjonshøyde over havet (meter).",
                            "example": 5.2
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "parameter": 1,
                    "stations": [
                      {
                        "id": 159880,
                        "name": "Falsterbo A",
                        "owner": "SMHI",
                        "ownerCategory": "CLIMATE",
                        "measuringStations": "CORE",
                        "active": true,
                        "from": 1420070400000,
                        "to": 1704067200000,
                        "latitude": 55.3837,
                        "longitude": 12.8163,
                        "height": 5.2
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "parameter",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `parameter` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sodir/co2": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_co2",
        "summary": "GET /api/connectors/sodir/co2 CO2-utslipp per felt fra SODIR Factpages (#2375).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/co2/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirCo2",
                  "description": "CO2-utslipp fra norsk sokkel. Uten `?aggregate` er hvert element en per-felt/ periode-måling; med `?aggregate=true` er hvert element en felt-aggregert totalsum.",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Per-felt/periode-måling (default).",
                        "required": [
                          "fieldName",
                          "year",
                          "month",
                          "co2TotalTonnes",
                          "breakdownBySource"
                        ],
                        "properties": {
                          "fieldName": {
                            "type": "string",
                            "example": "TROLL"
                          },
                          "year": {
                            "type": "integer",
                            "example": 2024
                          },
                          "month": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 6
                          },
                          "co2TotalTonnes": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "example": 125000
                          },
                          "breakdownBySource": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "gasTonnes",
                              "oilTonnes",
                              "flareTonnes"
                            ],
                            "properties": {
                              "gasTonnes": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "example": 80000
                              },
                              "oilTonnes": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "example": 30000
                              },
                              "flareTonnes": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "example": 15000
                              }
                            }
                          }
                        }
                      },
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Felt-aggregert totalsum (`aggregate=true`).",
                        "required": [
                          "fieldName",
                          "co2TotalTonnes",
                          "yearRange",
                          "recordCount"
                        ],
                        "properties": {
                          "fieldName": {
                            "type": "string",
                            "example": "TROLL"
                          },
                          "co2TotalTonnes": {
                            "type": "number",
                            "example": 2500000
                          },
                          "yearRange": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "start",
                              "end"
                            ],
                            "properties": {
                              "start": {
                                "type": "integer",
                                "example": 1996
                              },
                              "end": {
                                "type": "integer",
                                "example": 2024
                              }
                            }
                          },
                          "recordCount": {
                            "type": "integer",
                            "example": 336
                          }
                        }
                      }
                    ]
                  },
                  "example": [
                    {
                      "fieldName": "TROLL",
                      "year": 2024,
                      "month": 6,
                      "co2TotalTonnes": 125000,
                      "breakdownBySource": {
                        "gasTonnes": 80000,
                        "oilTonnes": 30000,
                        "flareTonnes": 15000
                      }
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/companies": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_companies",
        "summary": "GET /api/connectors/sodir/companies Selskaper aktive på norsk kontinentalsokkel — avledet fra utvinn",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/companies/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirCompanies",
                  "description": "Liste over selskaper registrert på norsk sokkel (SODIR), med NPD-id og navn.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "npdId",
                      "name"
                    ],
                    "properties": {
                      "npdId": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 43765
                      },
                      "name": {
                        "type": "string",
                        "example": "EQUINOR ENERGY AS"
                      }
                    }
                  },
                  "example": [
                    {
                      "npdId": 43765,
                      "name": "EQUINOR ENERGY AS"
                    },
                    {
                      "npdId": 12345,
                      "name": "AKER BP ASA"
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/decommissioning": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_decommissioning",
        "summary": "GET /api/connectors/sodir/decommissioning Felt i avvikling fra SODIR FeatureServer (#2375).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/decommissioning/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirDecommissioning",
                  "description": "Felt på norsk sokkel med nedstengings-/avviklingsstatus (fase).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "fieldName",
                      "operator",
                      "status",
                      "discoveryYear",
                      "phase",
                      "npdId"
                    ],
                    "properties": {
                      "fieldName": {
                        "type": "string",
                        "example": "FRIGG"
                      },
                      "operator": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "TotalEnergies"
                      },
                      "status": {
                        "type": "string",
                        "example": "SHUT DOWN"
                      },
                      "discoveryYear": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 1971
                      },
                      "phase": {
                        "type": "string",
                        "enum": [
                          "in_production",
                          "shut_down",
                          "abandoned",
                          "unknown"
                        ]
                      },
                      "npdId": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 43625
                      }
                    }
                  },
                  "example": [
                    {
                      "fieldName": "FRIGG",
                      "operator": "TotalEnergies",
                      "status": "SHUT DOWN",
                      "discoveryYear": 1971,
                      "phase": "shut_down",
                      "npdId": 43625
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/discoveries": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_discoveries",
        "summary": "GET /api/connectors/sodir/discoveries Funnregister fra SODIR FeatureServer layer 7000 — #2075.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/discoveries/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirDiscoveries",
                  "description": "Petroleumsfunn på norsk sokkel med operatør, funnår, hydrokarbontype og tilknytning til felt/brønn.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "operator",
                      "status",
                      "discoveryYear",
                      "hcType",
                      "npdId",
                      "fieldName",
                      "wellboreName",
                      "mainArea",
                      "province",
                      "ownerKind",
                      "ownerName",
                      "dateIncludedInField",
                      "centroid"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "JOHAN SVERDRUP"
                      },
                      "operator": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Equinor"
                      },
                      "status": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Producing"
                      },
                      "discoveryYear": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 2010
                      },
                      "hcType": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "OIL"
                      },
                      "npdId": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 20460323
                      },
                      "fieldName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "JOHAN SVERDRUP"
                      },
                      "wellboreName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "16/2-6"
                      },
                      "mainArea": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "North sea"
                      },
                      "province": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "ownerKind": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "ownerName": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "dateIncludedInField": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "centroid": {
                        "type": [
                          "array",
                          "null"
                        ],
                        "items": {
                          "type": "number"
                        },
                        "minItems": 2,
                        "maxItems": 2,
                        "description": "[lat, lon] — kun satt med ?includeGeometry=true, ellers null."
                      }
                    }
                  },
                  "example": [
                    {
                      "name": "JOHAN SVERDRUP",
                      "operator": "Equinor",
                      "status": "Producing",
                      "discoveryYear": 2010,
                      "hcType": "OIL",
                      "npdId": 20460323,
                      "fieldName": "JOHAN SVERDRUP",
                      "wellboreName": "16/2-6",
                      "mainArea": "North sea",
                      "province": null,
                      "ownerKind": null,
                      "ownerName": null,
                      "dateIncludedInField": null,
                      "centroid": null
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/facilities": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_facilities",
        "summary": "GET /api/connectors/sodir/facilities Installasjoner/fasiliteter er ikke implementert fra SODIR Featu",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/facilities/route.ts",
        "responses": {
          "501": {
            "description": "Ruten finnes, men kapabiliteten er ikke bygget ennå (#4134) — typisk fordi kilden er WFS/WMS/bulk-ingest, ikke REST. Returnerer strukturert JSON med `code: not_implemented` og en `reason` som bevarer connector-spesifikk kontekst. Ikke en kjørefeil, og retry hjelper ikke — se `x-implementation: planned`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "not_implemented",
        "x-implementation": "planned"
      }
    },
    "/api/connectors/sodir/fields": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_fields",
        "summary": "GET /api/connectors/sodir/fields Feltregister fra SODIR Factpages — navn, operatør, status, reserver",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/fields/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirFields",
                  "description": "Felt på norsk sokkel med operatør, status og utvinnbare/gjenværende ressurser (Mill/Bill Sm³).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "operator",
                      "status",
                      "discoveryYear",
                      "npdId",
                      "recoverableOilMillSm3",
                      "recoverableGasBillSm3",
                      "recoverableNglMillSm3",
                      "recoverableCondensateMillSm3",
                      "remainingOilMillSm3",
                      "remainingGasBillSm3"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "TROLL"
                      },
                      "operator": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Equinor Energy AS"
                      },
                      "status": {
                        "type": "string",
                        "example": "IN PRODUCTION"
                      },
                      "discoveryYear": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 1979
                      },
                      "npdId": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 43765
                      },
                      "recoverableOilMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 230.5
                      },
                      "recoverableGasBillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 1310
                      },
                      "recoverableNglMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 26.4
                      },
                      "recoverableCondensateMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 2.1
                      },
                      "remainingOilMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 18.7
                      },
                      "remainingGasBillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 640
                      }
                    }
                  },
                  "example": [
                    {
                      "name": "TROLL",
                      "operator": "Equinor Energy AS",
                      "status": "IN PRODUCTION",
                      "discoveryYear": 1979,
                      "npdId": 43765,
                      "recoverableOilMillSm3": 230.5,
                      "recoverableGasBillSm3": 1310,
                      "recoverableNglMillSm3": 26.4,
                      "recoverableCondensateMillSm3": 2.1,
                      "remainingOilMillSm3": 18.7,
                      "remainingGasBillSm3": 640
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/fields/{name}": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_fields__name_",
        "summary": "GET /api/connectors/sodir/fields/[name] Enkelt-oppslag på ett SODIR-felt etter navn (f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/fields/[name]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSodirField",
                  "additionalProperties": false,
                  "description": "Ett normalisert felt fra Sokkeldirektoratets (SODIR) feltregister, slått opp på navn (case-insensitivt). Volum-/reservetall er i SODIR-enheter (Mill Sm³ olje/NGL/ kondensat, Bill Sm³ gass).",
                  "required": [
                    "name",
                    "status"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Feltnavn (kanonisk SODIR-skrivemåte, vanligvis uppercase).",
                      "example": "TROLL"
                    },
                    "operator": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Operatørselskap (langform). Null hvis ikke oppgitt av SODIR.",
                      "example": "Equinor Energy AS"
                    },
                    "status": {
                      "type": "string",
                      "description": "Nåværende aktivitetsstatus fra SODIR (`fldCurrentActivitySatus`), f.eks. \"IN PRODUCTION\", \"SHUT DOWN\", \"APPROVED FOR PRODUCTION\".",
                      "example": "IN PRODUCTION"
                    },
                    "discoveryYear": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Funn-år for feltet. Null hvis ukjent.",
                      "example": 1979
                    },
                    "npdId": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "SODIR/NPD intern felt-ID (`fldNpdidField`). Null hvis ukjent.",
                      "example": 43765
                    },
                    "recoverableOilMillSm3": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Totale utvinnbare olje-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
                      "example": 230.5
                    },
                    "recoverableGasBillSm3": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Totale utvinnbare gass-ressurser i Bill Sm³. Null hvis ikke oppgitt.",
                      "example": 1310
                    },
                    "recoverableNglMillSm3": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Totale utvinnbare NGL-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
                      "example": 26.4
                    },
                    "recoverableCondensateMillSm3": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Totale utvinnbare kondensat-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
                      "example": 2.1
                    },
                    "remainingOilMillSm3": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Gjenværende olje-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
                      "example": 18.7
                    },
                    "remainingGasBillSm3": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Gjenværende gass-ressurser i Bill Sm³. Null hvis ikke oppgitt.",
                      "example": 640
                    }
                  },
                  "example": {
                    "name": "TROLL",
                    "operator": "Equinor Energy AS",
                    "status": "IN PRODUCTION",
                    "discoveryYear": 1979,
                    "npdId": 43765,
                    "recoverableOilMillSm3": 230.5,
                    "recoverableGasBillSm3": 1310,
                    "recoverableNglMillSm3": 26.4,
                    "recoverableCondensateMillSm3": 2.1,
                    "remainingOilMillSm3": 18.7,
                    "remainingGasBillSm3": 640
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `name` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sodir/health": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_health",
        "summary": "GET /api/connectors/sodir/health Default: statisk metadata (rask).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/licences": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_licences",
        "summary": "GET /api/connectors/sodir/licences Utvinningstillatelser fra Sokkeldirektoratets FeatureServer (laye",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/licences/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirLicences",
                  "description": "Utvinningstillatelser på norsk sokkel med status, fase, areal og operatør.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "npdId",
                      "name",
                      "status",
                      "phase",
                      "mainArea",
                      "dateGranted",
                      "dateValidTo",
                      "originalAreaKm2",
                      "currentAreaKm2",
                      "operatorName",
                      "operatorNpdId"
                    ],
                    "properties": {
                      "npdId": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 20460
                      },
                      "name": {
                        "type": "string",
                        "example": "PL 501"
                      },
                      "status": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "ACTIVE"
                      },
                      "phase": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "PRODUCTION"
                      },
                      "mainArea": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "North sea"
                      },
                      "dateGranted": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "2009-05-08"
                      },
                      "dateValidTo": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "2040-01-01"
                      },
                      "originalAreaKm2": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 340.5
                      },
                      "currentAreaKm2": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 120.2
                      },
                      "operatorName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Equinor Energy AS"
                      },
                      "operatorNpdId": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 2410
                      }
                    }
                  },
                  "example": [
                    {
                      "npdId": 20460,
                      "name": "PL 501",
                      "status": "ACTIVE",
                      "phase": "PRODUCTION",
                      "mainArea": "North sea",
                      "dateGranted": "2009-05-08",
                      "dateValidTo": "2040-01-01",
                      "originalAreaKm2": 340.5,
                      "currentAreaKm2": 120.2,
                      "operatorName": "Equinor Energy AS",
                      "operatorNpdId": 2410
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/operators/{name}/summary": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_operators__name__summary",
        "summary": "GET /api/connectors/sodir/operators/[name]/summary Sammenstilt operatør-snapshot på norsk sokkel: ak",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/operators/[name]/summary/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSodirOperatorSummary",
                  "additionalProperties": false,
                  "description": "Aggregert sammendrag for én operatør på norsk sokkel (SODIR): aktive felt/ lisenser, brønner og siste 12 mnd produksjon (SODIR-enheter).",
                  "required": [
                    "operator",
                    "activeFields",
                    "fieldNames",
                    "activeLicences",
                    "wellboresCompleted",
                    "wellboresTotal",
                    "productionLatest12m",
                    "source"
                  ],
                  "properties": {
                    "operator": {
                      "type": "string",
                      "example": "EQUINOR ENERGY AS"
                    },
                    "activeFields": {
                      "type": "integer",
                      "example": 32
                    },
                    "fieldNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Feltnavn (sortert, unike, uppercase).",
                      "example": [
                        "TROLL",
                        "JOHAN SVERDRUP"
                      ]
                    },
                    "activeLicences": {
                      "type": "integer",
                      "example": 210
                    },
                    "wellboresCompleted": {
                      "type": "integer",
                      "example": 1450
                    },
                    "wellboresTotal": {
                      "type": "integer",
                      "example": 1600
                    },
                    "productionLatest12m": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "Siste 12 mnd netto produksjon. Null uten produserende felt.",
                      "required": [
                        "oilNetMillSm3",
                        "gasNetBillSm3",
                        "condensateNetMillSm3",
                        "oilEquivNetMillSm3",
                        "fieldCount"
                      ],
                      "properties": {
                        "oilNetMillSm3": {
                          "type": "number",
                          "example": 45.2
                        },
                        "gasNetBillSm3": {
                          "type": "number",
                          "example": 38.1
                        },
                        "condensateNetMillSm3": {
                          "type": "number",
                          "example": 2.4
                        },
                        "oilEquivNetMillSm3": {
                          "type": "number",
                          "example": 88.9
                        },
                        "fieldCount": {
                          "type": "integer",
                          "example": 32
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "sodir"
                      ]
                    }
                  },
                  "example": {
                    "operator": "EQUINOR ENERGY AS",
                    "activeFields": 32,
                    "fieldNames": [
                      "TROLL",
                      "JOHAN SVERDRUP"
                    ],
                    "activeLicences": 210,
                    "wellboresCompleted": 1450,
                    "wellboresTotal": 1600,
                    "productionLatest12m": {
                      "oilNetMillSm3": 45.2,
                      "gasNetBillSm3": 38.1,
                      "condensateNetMillSm3": 2.4,
                      "oilEquivNetMillSm3": 88.9,
                      "fieldCount": 32
                    },
                    "source": "sodir"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `name` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/sodir/production": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_production",
        "summary": "GET /api/connectors/sodir/production Månedlig produksjonsdata (olje, gass, NGL, kondensat) fra SODIR",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/production/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirProduction",
                  "description": "Månedlig netto feltproduksjon på norsk sokkel (SODIR-enheter: Mill Sm³ olje/NGL/ kondensat/oljeekvivalenter, Bill Sm³ gass).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "year",
                      "month",
                      "fieldName",
                      "oilNetMillSm3",
                      "gasNetBillSm3",
                      "nglNetMillSm3",
                      "condensateNetMillSm3",
                      "oilEquivNetMillSm3"
                    ],
                    "properties": {
                      "year": {
                        "type": "integer",
                        "example": 2024
                      },
                      "month": {
                        "type": "integer",
                        "example": 6
                      },
                      "fieldName": {
                        "type": "string",
                        "example": "TROLL"
                      },
                      "oilNetMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 1.2
                      },
                      "gasNetBillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 3.4
                      },
                      "nglNetMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 0.1
                      },
                      "condensateNetMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 0.05
                      },
                      "oilEquivNetMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 4.8
                      }
                    }
                  },
                  "example": [
                    {
                      "year": 2024,
                      "month": 6,
                      "fieldName": "TROLL",
                      "oilNetMillSm3": 1.2,
                      "gasNetBillSm3": 3.4,
                      "nglNetMillSm3": 0.1,
                      "condensateNetMillSm3": 0.05,
                      "oilEquivNetMillSm3": 4.8
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/production-by-operator": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_production_by_operator",
        "summary": "GET /api/connectors/sodir/production-by-operator Månedlig produksjonsdata aggregert per operatør — #",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/production-by-operator/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirProductionByOperator",
                  "description": "Netto produksjon på norsk sokkel aggregert per operatør (SODIR-enheter).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "operator",
                      "oilNetMillSm3",
                      "gasNetBillSm3",
                      "condensateNetMillSm3",
                      "oilEquivNetMillSm3",
                      "fieldCount"
                    ],
                    "properties": {
                      "operator": {
                        "type": "string",
                        "example": "EQUINOR ENERGY AS"
                      },
                      "oilNetMillSm3": {
                        "type": "number",
                        "example": 45.2
                      },
                      "gasNetBillSm3": {
                        "type": "number",
                        "example": 38.1
                      },
                      "condensateNetMillSm3": {
                        "type": "number",
                        "example": 2.4
                      },
                      "oilEquivNetMillSm3": {
                        "type": "number",
                        "example": 88.9
                      },
                      "fieldCount": {
                        "type": "integer",
                        "example": 32
                      }
                    }
                  },
                  "example": [
                    {
                      "operator": "EQUINOR ENERGY AS",
                      "oilNetMillSm3": 45.2,
                      "gasNetBillSm3": 38.1,
                      "condensateNetMillSm3": 2.4,
                      "oilEquivNetMillSm3": 88.9,
                      "fieldCount": 32
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/reserves": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_reserves",
        "summary": "GET /api/connectors/sodir/reserves Ressursreserves per felt — utvinnbare og gjenværende olje/gass/NG",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/reserves/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirReserves",
                  "description": "Gjenværende og utvinnbare reserver per felt på norsk sokkel (SODIR-enheter + BOE-aggregat).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "fieldName",
                      "operator",
                      "status",
                      "remainingOilMillSm3",
                      "remainingGasBillSm3",
                      "recoverableOilMillSm3",
                      "recoverableGasBillSm3",
                      "recoverableNglMillSm3",
                      "recoverableCondensateMillSm3",
                      "remainingBoe",
                      "recoverableBoe"
                    ],
                    "properties": {
                      "fieldName": {
                        "type": "string",
                        "example": "TROLL"
                      },
                      "operator": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Equinor Energy AS"
                      },
                      "status": {
                        "type": "string",
                        "example": "IN PRODUCTION"
                      },
                      "remainingOilMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 18.7
                      },
                      "remainingGasBillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 640
                      },
                      "recoverableOilMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 230.5
                      },
                      "recoverableGasBillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 1310
                      },
                      "recoverableNglMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 26.4
                      },
                      "recoverableCondensateMillSm3": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 2.1
                      },
                      "remainingBoe": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 4200
                      },
                      "recoverableBoe": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 9800
                      }
                    }
                  },
                  "example": [
                    {
                      "fieldName": "TROLL",
                      "operator": "Equinor Energy AS",
                      "status": "IN PRODUCTION",
                      "remainingOilMillSm3": 18.7,
                      "remainingGasBillSm3": 640,
                      "recoverableOilMillSm3": 230.5,
                      "recoverableGasBillSm3": 1310,
                      "recoverableNglMillSm3": 26.4,
                      "recoverableCondensateMillSm3": 2.1,
                      "remainingBoe": 4200,
                      "recoverableBoe": 9800
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/wellbores": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_wellbores",
        "summary": "GET /api/connectors/sodir/wellbores Brønnregister fra SODIR Factpages — navn, felt, formål, status.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/wellbores/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSodirWellbores",
                  "description": "Brønner på norsk sokkel med formål, status, innhold og posisjon.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "fieldName",
                      "purpose",
                      "status",
                      "content",
                      "completionYear",
                      "coordinates"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "16/2-6"
                      },
                      "fieldName": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "JOHAN SVERDRUP"
                      },
                      "purpose": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "WILDCAT"
                      },
                      "status": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "PLUGGED"
                      },
                      "content": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "OIL"
                      },
                      "completionYear": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "example": 2010
                      },
                      "coordinates": {
                        "type": [
                          "array",
                          "null"
                        ],
                        "items": {
                          "type": "number"
                        },
                        "minItems": 2,
                        "maxItems": 2,
                        "description": "[lat, lon] — null hvis utilgjengelig.",
                        "example": [
                          58.85,
                          1.75
                        ]
                      }
                    }
                  },
                  "example": [
                    {
                      "name": "16/2-6",
                      "fieldName": "JOHAN SVERDRUP",
                      "purpose": "WILDCAT",
                      "status": "PLUGGED",
                      "content": "OIL",
                      "completionYear": 2010,
                      "coordinates": [
                        58.85,
                        1.75
                      ]
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/sodir/wells": {
      "get": {
        "tags": [
          "connector:sodir"
        ],
        "operationId": "get_api_connectors_sodir_wells",
        "summary": "GET /api/connectors/sodir/wells Brønndata eksisterer ikke som separat endepunkt i SODIR FeatureServe",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/sodir/wells/route.ts",
        "responses": {
          "404": {
            "description": "Endepunktet er utfaset (sunset) — bruk `/api/connectors/sodir/wellbores` i stedet. Returnerer strukturert JSON med `code: not_found` og `alternative`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-ketl-status": "sunset",
        "x-ketl-alternative": "/api/connectors/sodir/wellbores"
      }
    },
    "/api/connectors/ssb-kostra/health": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_health",
        "summary": "GET /api/connectors/ssb-kostra/health Helse-endepunkt for SSB-KOSTRA-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb-kostra/kostra/benchmark/{tableId}": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_kostra_benchmark__tableId_",
        "summary": "GET /api/connectors/ssb-kostra/kostra/benchmark/:tableId ?year=YYYY&municipalities=0301,4601 Sammenl",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/kostra/benchmark/[tableId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSsbKostraBenchmark",
                  "description": "KOSTRA-benchmark: én rad per kommune × indikator for en tabell, med verdi, nasjonalt snitt og percentil-rangering.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "municipalityCode",
                      "municipalityName",
                      "indicatorId",
                      "indicatorName",
                      "year",
                      "value",
                      "unit",
                      "nationalAverage",
                      "percentileRank"
                    ],
                    "properties": {
                      "municipalityCode": {
                        "type": "string",
                        "example": "0301"
                      },
                      "municipalityName": {
                        "type": "string",
                        "example": "Oslo"
                      },
                      "indicatorId": {
                        "type": "string",
                        "example": "netto_driftsutgifter_grunnskole"
                      },
                      "indicatorName": {
                        "type": "string",
                        "example": "Netto driftsutgifter grunnskole per innbygger"
                      },
                      "year": {
                        "type": "string",
                        "example": "2024"
                      },
                      "value": {
                        "type": "number",
                        "description": "Indikatorverdi for kommunen (ikke null i benchmark-utvalget).",
                        "example": 15234
                      },
                      "unit": {
                        "type": "string",
                        "example": "kr"
                      },
                      "nationalAverage": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "example": 14800
                      },
                      "percentileRank": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "Kommunens percentil (0–100) blant sammenlignede kommuner.",
                        "example": 62
                      }
                    }
                  },
                  "example": [
                    {
                      "municipalityCode": "0301",
                      "municipalityName": "Oslo",
                      "indicatorId": "netto_driftsutgifter_grunnskole",
                      "indicatorName": "Netto driftsutgifter grunnskole per innbygger",
                      "year": "2024",
                      "value": 15234,
                      "unit": "kr",
                      "nationalAverage": 14800,
                      "percentileRank": 62
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "tableId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `tableId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ssb-kostra/kostra/categories": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_kostra_categories",
        "summary": "GET /api/connectors/ssb-kostra/kostra/categories Returnerer liste over gyldige KOSTRA-kategorier med",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/kostra/categories/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb-kostra/kostra/indicators": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_kostra_indicators",
        "summary": "GET /api/connectors/ssb-kostra/kostra/indicators",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/kostra/indicators/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "title": "ConnectorSsbKostraIndicators",
                  "description": "Katalog over KOSTRA-indikatorer (id, navn, kategori). Enten den statiske standard-listen eller SSB-tabeller mappet fra en `q`-spørring.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "name",
                      "category"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "example": "netto_driftsutgifter_grunnskole"
                      },
                      "name": {
                        "type": "string",
                        "example": "Netto driftsutgifter grunnskole per innbygger"
                      },
                      "category": {
                        "type": "string",
                        "example": "Grunnskole"
                      },
                      "tableId": {
                        "type": "string",
                        "example": "12367"
                      },
                      "contentsCode": {
                        "type": "string",
                        "example": "KOSTleveringgrunnskole"
                      },
                      "description": {
                        "type": "string"
                      },
                      "unit": {
                        "type": "string",
                        "example": "kr"
                      }
                    }
                  },
                  "example": [
                    {
                      "id": "netto_driftsutgifter_grunnskole",
                      "name": "Netto driftsutgifter grunnskole per innbygger",
                      "category": "Grunnskole",
                      "unit": "kr"
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb-kostra/kostra/municipality/{kommunenummer}": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_kostra_municipality__kommunenummer_",
        "summary": "GET /api/connectors/ssb-kostra/kostra/municipality/{kommunenummer}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/kostra/municipality/[kommunenummer]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSsbKostraMunicipality",
                  "additionalProperties": false,
                  "description": "KOSTRA-nøkkeltall for én norsk kommune (SSB). Én rad per indikator med verdi, enhet, kategori og år.",
                  "required": [
                    "kommunenummer",
                    "indicators"
                  ],
                  "properties": {
                    "kommunenummer": {
                      "type": "string",
                      "example": "0301"
                    },
                    "kommunenavn": {
                      "type": "string",
                      "example": "Oslo"
                    },
                    "year": {
                      "type": "integer",
                      "example": 2024
                    },
                    "indicators": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "category"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "netto_driftsutgifter_grunnskole"
                          },
                          "name": {
                            "type": "string",
                            "example": "Netto driftsutgifter grunnskole per innbygger"
                          },
                          "category": {
                            "type": "string",
                            "example": "Grunnskole"
                          },
                          "value": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "example": 15234
                          },
                          "unit": {
                            "type": "string",
                            "example": "kr"
                          },
                          "year": {
                            "type": "integer",
                            "example": 2024
                          },
                          "source": {
                            "type": "string",
                            "example": "SSB KOSTRA"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "kommunenummer": "0301",
                    "kommunenavn": "Oslo",
                    "year": 2024,
                    "indicators": [
                      {
                        "id": "netto_driftsutgifter_grunnskole",
                        "name": "Netto driftsutgifter grunnskole per innbygger",
                        "category": "Grunnskole",
                        "value": 15234,
                        "unit": "kr",
                        "year": 2024,
                        "source": "SSB KOSTRA"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "kommunenummer",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `kommunenummer` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ssb-kostra/kostra/municipality/{kommunenummer}/category/{category}": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_kostra_municipality__kommunenummer__category__category_",
        "summary": "GET /api/connectors/ssb-kostra/kostra/municipality/{kommunenummer}/category/{category} KOSTRA-nøkkel",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/kostra/municipality/[kommunenummer]/category/[category]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSsbKostraMunicipality",
                  "additionalProperties": false,
                  "description": "KOSTRA-nøkkeltall for én norsk kommune (SSB). Én rad per indikator med verdi, enhet, kategori og år.",
                  "required": [
                    "kommunenummer",
                    "indicators"
                  ],
                  "properties": {
                    "kommunenummer": {
                      "type": "string",
                      "example": "0301"
                    },
                    "kommunenavn": {
                      "type": "string",
                      "example": "Oslo"
                    },
                    "year": {
                      "type": "integer",
                      "example": 2024
                    },
                    "indicators": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "category"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "netto_driftsutgifter_grunnskole"
                          },
                          "name": {
                            "type": "string",
                            "example": "Netto driftsutgifter grunnskole per innbygger"
                          },
                          "category": {
                            "type": "string",
                            "example": "Grunnskole"
                          },
                          "value": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "example": 15234
                          },
                          "unit": {
                            "type": "string",
                            "example": "kr"
                          },
                          "year": {
                            "type": "integer",
                            "example": 2024
                          },
                          "source": {
                            "type": "string",
                            "example": "SSB KOSTRA"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "kommunenummer": "0301",
                    "kommunenavn": "Oslo",
                    "year": 2024,
                    "indicators": [
                      {
                        "id": "netto_driftsutgifter_grunnskole",
                        "name": "Netto driftsutgifter grunnskole per innbygger",
                        "category": "Grunnskole",
                        "value": 15234,
                        "unit": "kr",
                        "year": 2024,
                        "source": "SSB KOSTRA"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "kommunenummer",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `kommunenummer` — se connector-dokumentasjon for format."
          },
          {
            "name": "category",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `category` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ssb-kostra/kostra/national-averages": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_kostra_national_averages",
        "summary": "GET /api/connectors/ssb-kostra/kostra/national-averages ?year=YYYY Landsgjennomsnitt for alle 44 KOS",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/kostra/national-averages/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb-kostra/municipality/{kommunenummer}/befolkning": {
      "get": {
        "tags": [
          "connector:ssb-kostra"
        ],
        "operationId": "get_api_connectors_ssb_kostra_municipality__kommunenummer__befolkning",
        "summary": "GET /api/connectors/ssb-kostra/municipality/{kommunenummer}/befolkning?years=10 Agent-first shortcut",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-kostra/municipality/[kommunenummer]/befolkning/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSsbKostraBefolkning",
                  "additionalProperties": false,
                  "description": "Folketall-tidsserie for én norsk kommune (SSB tabell 07459), ett datapunkt per år, sortert stigende.",
                  "required": [
                    "kommunenummer",
                    "source",
                    "tableId",
                    "observations"
                  ],
                  "properties": {
                    "kommunenummer": {
                      "type": "string",
                      "example": "0301"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "ssb"
                      ]
                    },
                    "tableId": {
                      "type": "string",
                      "description": "SSB-tabell-id (alltid «07459» for denne ruten).",
                      "example": "07459"
                    },
                    "observations": {
                      "type": "array",
                      "description": "Ett datapunkt per år, stigende.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "year",
                          "innbyggere"
                        ],
                        "properties": {
                          "year": {
                            "type": "string",
                            "example": "2024"
                          },
                          "innbyggere": {
                            "type": "integer",
                            "example": 709037
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "kommunenummer": "0301",
                    "source": "ssb",
                    "tableId": "07459",
                    "observations": [
                      {
                        "year": "2023",
                        "innbyggere": 699827
                      },
                      {
                        "year": "2024",
                        "innbyggere": 709037
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "kommunenummer",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `kommunenummer` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ssb-microdata/health": {
      "get": {
        "tags": [
          "connector:ssb-microdata"
        ],
        "operationId": "get_api_connectors_ssb_microdata_health",
        "summary": "GET /api/connectors/ssb-microdata/health Status for SSB Microdata-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-microdata/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb-microdata/query": {
      "get": {
        "tags": [
          "connector:ssb-microdata"
        ],
        "operationId": "get_api_connectors_ssb_microdata_query",
        "summary": "GET /api/connectors/ssb-microdata/query?preset=<navn>[&<presetParam>=...] Kjører en forhåndsdefinert",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb-microdata/query/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "preset",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "income_distribution_by_municipality",
                "employment_rate_by_education_level",
                "wage_growth_by_sector"
              ]
            },
            "description": "Forhåndsdefinert mikrodata-spørring",
            "example": "income_distribution_by_municipality"
          }
        ]
      }
    },
    "/api/connectors/ssb/health": {
      "get": {
        "tags": [
          "connector:ssb"
        ],
        "operationId": "get_api_connectors_ssb_health",
        "summary": "GET /api/connectors/ssb/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb/indicator": {
      "get": {
        "tags": [
          "connector:ssb"
        ],
        "operationId": "get_api_connectors_ssb_indicator",
        "summary": "GET /api/connectors/ssb/indicator?id={alias}&months={N} Forenklet makro-indikator-API på toppen av S",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb/indicator/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Indikator-alias (cpi, gdp, unemployment-aku, …) — påkrevd med mindre ?list=true",
            "example": "cpi"
          },
          {
            "name": "list",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Lister alle tilgjengelige alias",
            "example": "true"
          }
        ]
      }
    },
    "/api/connectors/ssb/tables": {
      "get": {
        "tags": [
          "connector:ssb"
        ],
        "operationId": "get_api_connectors_ssb_tables",
        "summary": "GET /api/connectors/ssb/tables Paginert tabell-liste fra SSB Statbank (PxWebApi v2).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb/tables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ssb/tables/{id}/data": {
      "post": {
        "tags": [
          "connector:ssb"
        ],
        "operationId": "post_api_connectors_ssb_tables__id__data",
        "summary": "POST /api/connectors/ssb/tables/[id]/data Data-uttrekk fra SSB Statbank (PxWebApi v2).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb/tables/[id]/data/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "405": {
            "description": "Feil HTTP-metode. Svaret har `Allow`-header med tillatte metoder (RFC 9110 §15.5.6) og strukturert JSON-kropp `{error: \"method_not_allowed\", code, allow, message}`.",
            "headers": {
              "Allow": {
                "description": "Tillatte metoder for endepunktet, f.eks. `POST`.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ssb/tables/{id}/metadata": {
      "get": {
        "tags": [
          "connector:ssb"
        ],
        "operationId": "get_api_connectors_ssb_tables__id__metadata",
        "summary": "GET /api/connectors/ssb/tables/[id]/metadata Tabell-metadata (dimensjoner, kategorier, kodelistenavn",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb/tables/[id]/metadata/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSsbTableMetadata",
                  "additionalProperties": false,
                  "description": "Dimensjons-katalog for én SSB Statbank-tabell: variabler (dimensjoner), deres verdier (value-sets), kodelistereferanser og type. Brukes til celle-estimering og selection-validering før data-uttrekk.",
                  "required": [
                    "id",
                    "variables"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[0-9]{2,8}$",
                      "description": "Statbank tabell-ID (2-8 siffer; ledende nuller bevart).",
                      "example": "07459"
                    },
                    "label": {
                      "type": "string",
                      "description": "Menneskelesbar tabelltittel. Mangler hvis SSB ikke populerer den.",
                      "example": "Befolkning, etter region, kjønn, alder og år"
                    },
                    "source": {
                      "type": "string",
                      "description": "Kilde-attribusjon fra SSB selv (ikke injisert av web-laget). Typisk \"Statistisk sentralbyrå\". Mangler når SSB ikke oppgir den.",
                      "example": "Statistisk sentralbyrå"
                    },
                    "updated": {
                      "type": "string",
                      "description": "Tidsstempel for siste oppdatering av tabellen (ISO-8601), hvis oppgitt.",
                      "example": "2024-02-22T07:00:00Z"
                    },
                    "language": {
                      "type": "string",
                      "description": "Språkkode for label/verdi-tekstene SSB returnerte (no/en).",
                      "example": "no"
                    },
                    "variableNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Navn på dimensjonene som tekst-array. SSB kan returnere en enkelt streng eller en streng-array; web-laget normaliserer alltid til array (#3085).",
                      "example": [
                        "region",
                        "kjonn",
                        "alder",
                        "Tid"
                      ]
                    },
                    "variables": {
                      "type": "array",
                      "description": "Dimensjons-katalog. Hver oppføring beskriver én variabel (dimensjon) i tabellen og dens tilgjengelige verdier.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "label"
                        ],
                        "description": "Én variabel (dimensjon) i tabellen.",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Variabel-/dimensjonskode (brukes som valueCodes-nøkkel i selection).",
                            "example": "Region"
                          },
                          "label": {
                            "type": "string",
                            "description": "Menneskelesbart navn på variabelen.",
                            "example": "region"
                          },
                          "type": {
                            "type": "string",
                            "description": "Variabeltype. PxWebApi v2 bruker hele ord (\"Geographic\", \"TimeVariable\", \"Contents\", \"Regular\"); eldre format brukte enkeltbokstaver. Aksepteres som fri streng.",
                            "example": "Geographic"
                          },
                          "values": {
                            "type": "array",
                            "description": "Tilgjengelige verdier for variabelen. Hvert element er enten et `{code, label}`-objekt (PxWebApi v2) eller en ren verdikode-streng (eldre v1-format) — union (#2972).",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "description": "Verdikode (eldre v1-format).",
                                  "example": "0301"
                                },
                                {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "required": [
                                    "code",
                                    "label"
                                  ],
                                  "description": "Verdikode med tekst (PxWebApi v2-format).",
                                  "properties": {
                                    "code": {
                                      "type": "string",
                                      "description": "Verdikode (brukes i selection.valueCodes).",
                                      "example": "0301"
                                    },
                                    "label": {
                                      "type": "string",
                                      "description": "Menneskelesbar verditekst.",
                                      "example": "Oslo"
                                    }
                                  }
                                }
                              ]
                            }
                          },
                          "valueTexts": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Parallell tekst-array til `values` i eldre format der `values` er rene koder. Mangler i v2-objektformatet.",
                            "example": [
                              "Oslo",
                              "Bergen"
                            ]
                          },
                          "elimination": {
                            "type": "boolean",
                            "description": "Om variabelen kan elimineres (aggregeres bort) i et uttrekk.",
                            "example": false
                          },
                          "time": {
                            "type": "boolean",
                            "description": "Om variabelen er tids-dimensjonen.",
                            "example": true
                          },
                          "codeList": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Referanse til en delt kodeliste (vs_-id) hvis variabelen bruker en. PxWebApi v2 returnerer null for variabler uten kodeliste (#3085).",
                            "example": "vs_Kommun"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "07459",
                    "label": "Befolkning, etter region, kjønn, alder og år",
                    "source": "Statistisk sentralbyrå",
                    "updated": "2024-02-22T07:00:00Z",
                    "language": "no",
                    "variableNames": [
                      "region",
                      "kjonn",
                      "alder",
                      "Tid"
                    ],
                    "variables": [
                      {
                        "id": "Region",
                        "label": "region",
                        "type": "Geographic",
                        "elimination": true,
                        "codeList": "vs_Kommun",
                        "values": [
                          {
                            "code": "0301",
                            "label": "Oslo"
                          },
                          {
                            "code": "4601",
                            "label": "Bergen"
                          }
                        ]
                      },
                      {
                        "id": "Kjonn",
                        "label": "kjønn",
                        "type": "Regular",
                        "elimination": true,
                        "codeList": null,
                        "values": [
                          {
                            "code": "1",
                            "label": "Menn"
                          },
                          {
                            "code": "2",
                            "label": "Kvinner"
                          }
                        ]
                      },
                      {
                        "id": "Tid",
                        "label": "år",
                        "type": "TimeVariable",
                        "time": true,
                        "elimination": false,
                        "codeList": null,
                        "values": [
                          {
                            "code": "2023",
                            "label": "2023"
                          },
                          {
                            "code": "2024",
                            "label": "2024"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/ssb/{id}": {
      "get": {
        "tags": [
          "connector:ssb"
        ],
        "operationId": "get_api_connectors_ssb__id_",
        "summary": "GET /api/connectors/ssb/[id] Bekvemmeligheits-alias for /api/connectors/ssb/tables/[id]/metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ssb/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSsbTableMetadata",
                  "additionalProperties": false,
                  "description": "Dimensjons-katalog for én SSB Statbank-tabell: variabler (dimensjoner), deres verdier (value-sets), kodelistereferanser og type. Brukes til celle-estimering og selection-validering før data-uttrekk.",
                  "required": [
                    "id",
                    "variables"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[0-9]{2,8}$",
                      "description": "Statbank tabell-ID (2-8 siffer; ledende nuller bevart).",
                      "example": "07459"
                    },
                    "label": {
                      "type": "string",
                      "description": "Menneskelesbar tabelltittel. Mangler hvis SSB ikke populerer den.",
                      "example": "Befolkning, etter region, kjønn, alder og år"
                    },
                    "source": {
                      "type": "string",
                      "description": "Kilde-attribusjon fra SSB selv (ikke injisert av web-laget). Typisk \"Statistisk sentralbyrå\". Mangler når SSB ikke oppgir den.",
                      "example": "Statistisk sentralbyrå"
                    },
                    "updated": {
                      "type": "string",
                      "description": "Tidsstempel for siste oppdatering av tabellen (ISO-8601), hvis oppgitt.",
                      "example": "2024-02-22T07:00:00Z"
                    },
                    "language": {
                      "type": "string",
                      "description": "Språkkode for label/verdi-tekstene SSB returnerte (no/en).",
                      "example": "no"
                    },
                    "variableNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Navn på dimensjonene som tekst-array. SSB kan returnere en enkelt streng eller en streng-array; web-laget normaliserer alltid til array (#3085).",
                      "example": [
                        "region",
                        "kjonn",
                        "alder",
                        "Tid"
                      ]
                    },
                    "variables": {
                      "type": "array",
                      "description": "Dimensjons-katalog. Hver oppføring beskriver én variabel (dimensjon) i tabellen og dens tilgjengelige verdier.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "label"
                        ],
                        "description": "Én variabel (dimensjon) i tabellen.",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Variabel-/dimensjonskode (brukes som valueCodes-nøkkel i selection).",
                            "example": "Region"
                          },
                          "label": {
                            "type": "string",
                            "description": "Menneskelesbart navn på variabelen.",
                            "example": "region"
                          },
                          "type": {
                            "type": "string",
                            "description": "Variabeltype. PxWebApi v2 bruker hele ord (\"Geographic\", \"TimeVariable\", \"Contents\", \"Regular\"); eldre format brukte enkeltbokstaver. Aksepteres som fri streng.",
                            "example": "Geographic"
                          },
                          "values": {
                            "type": "array",
                            "description": "Tilgjengelige verdier for variabelen. Hvert element er enten et `{code, label}`-objekt (PxWebApi v2) eller en ren verdikode-streng (eldre v1-format) — union (#2972).",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "description": "Verdikode (eldre v1-format).",
                                  "example": "0301"
                                },
                                {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "required": [
                                    "code",
                                    "label"
                                  ],
                                  "description": "Verdikode med tekst (PxWebApi v2-format).",
                                  "properties": {
                                    "code": {
                                      "type": "string",
                                      "description": "Verdikode (brukes i selection.valueCodes).",
                                      "example": "0301"
                                    },
                                    "label": {
                                      "type": "string",
                                      "description": "Menneskelesbar verditekst.",
                                      "example": "Oslo"
                                    }
                                  }
                                }
                              ]
                            }
                          },
                          "valueTexts": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Parallell tekst-array til `values` i eldre format der `values` er rene koder. Mangler i v2-objektformatet.",
                            "example": [
                              "Oslo",
                              "Bergen"
                            ]
                          },
                          "elimination": {
                            "type": "boolean",
                            "description": "Om variabelen kan elimineres (aggregeres bort) i et uttrekk.",
                            "example": false
                          },
                          "time": {
                            "type": "boolean",
                            "description": "Om variabelen er tids-dimensjonen.",
                            "example": true
                          },
                          "codeList": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Referanse til en delt kodeliste (vs_-id) hvis variabelen bruker en. PxWebApi v2 returnerer null for variabler uten kodeliste (#3085).",
                            "example": "vs_Kommun"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "07459",
                    "label": "Befolkning, etter region, kjønn, alder og år",
                    "source": "Statistisk sentralbyrå",
                    "updated": "2024-02-22T07:00:00Z",
                    "language": "no",
                    "variableNames": [
                      "region",
                      "kjonn",
                      "alder",
                      "Tid"
                    ],
                    "variables": [
                      {
                        "id": "Region",
                        "label": "region",
                        "type": "Geographic",
                        "elimination": true,
                        "codeList": "vs_Kommun",
                        "values": [
                          {
                            "code": "0301",
                            "label": "Oslo"
                          },
                          {
                            "code": "4601",
                            "label": "Bergen"
                          }
                        ]
                      },
                      {
                        "id": "Kjonn",
                        "label": "kjønn",
                        "type": "Regular",
                        "elimination": true,
                        "codeList": null,
                        "values": [
                          {
                            "code": "1",
                            "label": "Menn"
                          },
                          {
                            "code": "2",
                            "label": "Kvinner"
                          }
                        ]
                      },
                      {
                        "id": "Tid",
                        "label": "år",
                        "type": "TimeVariable",
                        "time": true,
                        "elimination": false,
                        "codeList": null,
                        "values": [
                          {
                            "code": "2023",
                            "label": "2023"
                          },
                          {
                            "code": "2024",
                            "label": "2024"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stat-fi/health": {
      "get": {
        "tags": [
          "connector:stat-fi"
        ],
        "operationId": "get_api_connectors_stat_fi_health",
        "summary": "GET /api/connectors/stat-fi/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stat-fi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stat-fi/tables": {
      "get": {
        "tags": [
          "connector:stat-fi"
        ],
        "operationId": "get_api_connectors_stat_fi_tables",
        "summary": "GET /api/connectors/stat-fi/tables",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stat-fi/tables/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/statnett/health": {
      "get": {
        "tags": [
          "connector:statnett"
        ],
        "operationId": "get_api_connectors_statnett_health",
        "summary": "GET /api/connectors/statnett/health Smoke-endepunkt for Statnett-connectoren.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/statnett/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/statnett/power-flow": {
      "get": {
        "tags": [
          "connector:statnett"
        ],
        "operationId": "get_api_connectors_statnett_power_flow",
        "summary": "GET /api/connectors/statnett/power-flow Statnetts driftsdata-API er sunset (#2194).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/statnett/power-flow/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/statsregnskap/health": {
      "get": {
        "tags": [
          "connector:statsregnskap"
        ],
        "operationId": "get_api_connectors_statsregnskap_health",
        "summary": "GET /api/connectors/statsregnskap/health Default: kjører `handleStatsregnskapHealth` som prober DFØ-",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/statsregnskap/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/statsregnskap/search": {
      "get": {
        "tags": [
          "connector:statsregnskap"
        ],
        "operationId": "get_api_connectors_statsregnskap_search",
        "summary": "GET /api/connectors/statsregnskap/search?aar=2024&virksomhet=974761076&konto=05 Strømmer per-år regn",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/statsregnskap/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStatsregnskapSearch",
                  "additionalProperties": false,
                  "description": "Søk i det norske statsregnskapet: aggregat per post-type + rader med kapittel/ post/artskonto/virksomhet og beløp for ett år.",
                  "required": [
                    "source",
                    "year",
                    "query",
                    "totalMatched",
                    "sumBelop",
                    "truncated",
                    "byPostType",
                    "rows",
                    "fetchedAt"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "statsregnskap"
                      ]
                    },
                    "year": {
                      "type": "integer",
                      "example": 2024
                    },
                    "query": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Ekko av oppgitte filter (felt utelates når de ikke ble oppgitt).",
                      "properties": {
                        "virksomhet": {
                          "type": "string"
                        },
                        "konto": {
                          "type": "string"
                        },
                        "artskonto": {
                          "type": "string"
                        },
                        "departement": {
                          "type": "string"
                        }
                      }
                    },
                    "totalMatched": {
                      "type": "integer",
                      "example": 320
                    },
                    "sumBelop": {
                      "type": "number",
                      "description": "Sum beløp for treffene (NOK).",
                      "example": 4500000000
                    },
                    "truncated": {
                      "type": "boolean",
                      "example": false
                    },
                    "byPostType": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "postType",
                          "sumBelop",
                          "rowCount"
                        ],
                        "properties": {
                          "postType": {
                            "type": "string",
                            "example": "Driftsutgifter"
                          },
                          "sumBelop": {
                            "type": "number",
                            "example": 3200000000
                          },
                          "rowCount": {
                            "type": "integer",
                            "example": 210
                          }
                        }
                      }
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "aar",
                          "periode",
                          "kontoNr",
                          "konto",
                          "fagdepartementId",
                          "fagdepartement",
                          "kapittelId",
                          "kapittel",
                          "postId",
                          "post",
                          "postType",
                          "artskontoId",
                          "artskonto",
                          "virksomhetId",
                          "virksomhet",
                          "belop"
                        ],
                        "properties": {
                          "aar": {
                            "type": "string",
                            "example": "2024"
                          },
                          "periode": {
                            "type": "string",
                            "example": "12"
                          },
                          "kontoNr": {
                            "type": "string",
                            "example": "0001"
                          },
                          "konto": {
                            "type": "string",
                            "example": "Driftsutgifter"
                          },
                          "fagdepartementId": {
                            "type": "string",
                            "example": "FIN"
                          },
                          "fagdepartement": {
                            "type": "string",
                            "example": "Finansdepartementet"
                          },
                          "kapittelId": {
                            "type": "string",
                            "example": "1600"
                          },
                          "kapittel": {
                            "type": "string",
                            "example": "Finansdepartementet"
                          },
                          "postId": {
                            "type": "string",
                            "example": "01"
                          },
                          "post": {
                            "type": "string",
                            "example": "Driftsutgifter"
                          },
                          "postType": {
                            "type": "string",
                            "example": "Driftsutgifter"
                          },
                          "artskontoId": {
                            "type": "string",
                            "example": "11"
                          },
                          "artskonto": {
                            "type": "string",
                            "example": "Lønn"
                          },
                          "virksomhetId": {
                            "type": "string",
                            "example": "12345"
                          },
                          "virksomhet": {
                            "type": "string",
                            "example": "Skatteetaten"
                          },
                          "belop": {
                            "type": "number",
                            "example": 1200000
                          }
                        }
                      }
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  },
                  "example": {
                    "source": "statsregnskap",
                    "year": 2024,
                    "query": {
                      "departement": "FIN"
                    },
                    "totalMatched": 1,
                    "sumBelop": 1200000,
                    "truncated": false,
                    "byPostType": [
                      {
                        "postType": "Driftsutgifter",
                        "sumBelop": 1200000,
                        "rowCount": 1
                      }
                    ],
                    "rows": [
                      {
                        "aar": "2024",
                        "periode": "12",
                        "kontoNr": "0001",
                        "konto": "Driftsutgifter",
                        "fagdepartementId": "FIN",
                        "fagdepartement": "Finansdepartementet",
                        "kapittelId": "1600",
                        "kapittel": "Finansdepartementet",
                        "postId": "01",
                        "post": "Driftsutgifter",
                        "postType": "Driftsutgifter",
                        "artskontoId": "11",
                        "artskonto": "Lønn",
                        "virksomhetId": "12345",
                        "virksomhet": "Skatteetaten",
                        "belop": 1200000
                      }
                    ],
                    "fetchedAt": "2026-07-03T09:15:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/statsregnskap/virksomheter": {
      "get": {
        "tags": [
          "connector:statsregnskap"
        ],
        "operationId": "get_api_connectors_statsregnskap_virksomheter",
        "summary": "GET /api/connectors/statsregnskap/virksomheter?aar=2024 Liste over statlige virksomheter med aggrege",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/statsregnskap/virksomheter/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stiftelsesregisteret/health": {
      "get": {
        "tags": [
          "connector:stiftelsesregisteret"
        ],
        "operationId": "get_api_connectors_stiftelsesregisteret_health",
        "summary": "GET /api/connectors/stiftelsesregisteret/health Stiftelsesregisterets REST-API er sunset (#2037).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stiftelsesregisteret/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stiftelsesregisteret/stiftelse/{orgnr}": {
      "get": {
        "tags": [
          "connector:stiftelsesregisteret"
        ],
        "operationId": "get_api_connectors_stiftelsesregisteret_stiftelse__orgnr_",
        "summary": "GET /api/connectors/stiftelsesregisteret/stiftelse/{orgnr}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stiftelsesregisteret/stiftelse/[orgnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStiftelsesregisteretStiftelse",
                  "additionalProperties": false,
                  "description": "Én normalisert stiftelse fra Stiftelsesregisteret, slått opp på 9-sifret norsk organisasjonsnummer. Inkluderer stiftelsestype, formål, grunnkapital og forretnings-/postadresse i kanonisk form.",
                  "required": [
                    "data",
                    "cacheStatus"
                  ],
                  "properties": {
                    "cacheStatus": {
                      "type": "string",
                      "enum": [
                        "hit",
                        "miss"
                      ],
                      "description": "Om svaret ble servert fra connector-cachen eller hentet friskt."
                    },
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Den normaliserte stiftelsen.",
                      "required": [
                        "orgnr",
                        "navn",
                        "stiftelsestype"
                      ],
                      "properties": {
                        "orgnr": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Norsk organisasjonsnummer (9 siffer).",
                          "example": "971526157"
                        },
                        "navn": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "Kavlifondet"
                        },
                        "stiftelsestype": {
                          "type": "object",
                          "additionalProperties": false,
                          "description": "Stiftelsestype (kode + lesbar beskrivelse).",
                          "required": [
                            "kode",
                            "beskrivelse"
                          ],
                          "properties": {
                            "kode": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "ALM"
                            },
                            "beskrivelse": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "example": "Alminnelig stiftelse"
                            }
                          }
                        },
                        "formaal": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Stiftelsens vedtektsfestede formål (fritekst)."
                        },
                        "grunnkapital": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Grunnkapital i oppgitt valuta.",
                          "example": 100000
                        },
                        "grunnkapitalValuta": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "NOK"
                        },
                        "registreringsdato": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "ISO-dato for registrering.",
                          "example": "1962-01-01"
                        },
                        "forretningsadresse": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "description": "Forretningsadresse i normalisert form. Null hvis ikke oppgitt.",
                          "properties": {
                            "adresse": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Adresselinjer."
                            },
                            "postnummer": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "poststed": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "kommune": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "kommunenummer": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "landkode": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "land": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        },
                        "postadresse": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "description": "Postadresse i normalisert form. Null hvis ikke oppgitt.",
                          "properties": {
                            "adresse": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Adresselinjer."
                            },
                            "postnummer": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "poststed": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "kommune": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "kommunenummer": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "landkode": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "land": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        },
                        "hjemmeside": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "https://www.kavlifondet.no"
                        }
                      }
                    }
                  },
                  "example": {
                    "cacheStatus": "miss",
                    "data": {
                      "orgnr": "971526157",
                      "navn": "Kavlifondet",
                      "stiftelsestype": {
                        "kode": "ALM",
                        "beskrivelse": "Alminnelig stiftelse"
                      },
                      "formaal": "Å dele ut overskudd til humanitære, forskningsmessige og kulturelle formål.",
                      "grunnkapital": 100000,
                      "grunnkapitalValuta": "NOK",
                      "registreringsdato": "1962-01-01",
                      "forretningsadresse": {
                        "adresse": [
                          "Karvesvingen 5"
                        ],
                        "postnummer": "0579",
                        "poststed": "OSLO",
                        "kommune": "OSLO",
                        "kommunenummer": "0301",
                        "landkode": "NO",
                        "land": "Norge"
                      },
                      "postadresse": null,
                      "hjemmeside": "https://www.kavlifondet.no"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `orgnr` — se connector-dokumentasjon for format."
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/stiftelsesregisteret/stiftelser": {
      "get": {
        "tags": [
          "connector:stiftelsesregisteret"
        ],
        "operationId": "get_api_connectors_stiftelsesregisteret_stiftelser",
        "summary": "GET /api/connectors/stiftelsesregisteret/stiftelser",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stiftelsesregisteret/stiftelser/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "navn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk på stiftelsesnavn",
            "example": "Kavli"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            },
            "description": "Sidenummer (0-indeksert)",
            "example": "0"
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Antall treff per side",
            "example": "20"
          }
        ]
      }
    },
    "/api/connectors/stiftelsesregisteret/via-brreg": {
      "get": {
        "tags": [
          "connector:stiftelsesregisteret"
        ],
        "operationId": "get_api_connectors_stiftelsesregisteret_via_brreg",
        "summary": "GET /api/connectors/stiftelsesregisteret/via-brreg?navn=...&size=...&fra=...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stiftelsesregisteret/via-brreg/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget-votes/health": {
      "get": {
        "tags": [
          "connector:stortinget-votes"
        ],
        "operationId": "get_api_connectors_stortinget_votes_health",
        "summary": "GET /api/connectors/stortinget-votes/health (#3495) Default: statisk metadata via `handleStortingetV",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget-votes/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget-votes/sak/{sakId}": {
      "get": {
        "tags": [
          "connector:stortinget-votes"
        ],
        "operationId": "get_api_connectors_stortinget_votes_sak__sakId_",
        "summary": "GET /api/connectors/stortinget-votes/sak/:sakId (#3495) Alle voteringer for én stortingssak — første",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget-votes/sak/[sakId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStortingetVotesSak",
                  "additionalProperties": false,
                  "description": "Alle voteringer knyttet til én stortingssak (uten per-representant-stemmer — bruk votering-oppslaget for detaljene).",
                  "required": [
                    "sakId",
                    "count",
                    "voteringer"
                  ],
                  "properties": {
                    "sakId": {
                      "type": "string",
                      "example": "98765"
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall voteringer (= `voteringer.length`).",
                      "example": 3
                    },
                    "voteringer": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "voteringId",
                          "sakId",
                          "dato",
                          "tittel",
                          "vedtatt",
                          "antallFor",
                          "antallMot",
                          "antallIkkeTilstede",
                          "sesjon",
                          "publicUrl",
                          "source"
                        ],
                        "properties": {
                          "voteringId": {
                            "type": "string",
                            "example": "12345"
                          },
                          "sakId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "98765"
                          },
                          "dato": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-03-14"
                          },
                          "tittel": {
                            "type": "string",
                            "example": "Voteringstema"
                          },
                          "vedtatt": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "example": true
                          },
                          "antallFor": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 88
                          },
                          "antallMot": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 81
                          },
                          "antallIkkeTilstede": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "example": 0
                          },
                          "sesjon": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-2025"
                          },
                          "publicUrl": {
                            "type": "string",
                            "example": "https://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=98765"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "STORTINGET"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "sakId": "98765",
                    "count": 1,
                    "voteringer": [
                      {
                        "voteringId": "12345",
                        "sakId": "98765",
                        "dato": "2025-03-14",
                        "tittel": "Voteringstema",
                        "vedtatt": true,
                        "antallFor": 88,
                        "antallMot": 81,
                        "antallIkkeTilstede": 0,
                        "sesjon": "2024-2025",
                        "publicUrl": "https://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=98765",
                        "source": "STORTINGET"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "sakId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `sakId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stortinget-votes/votering/{voteringId}": {
      "get": {
        "tags": [
          "connector:stortinget-votes"
        ],
        "operationId": "get_api_connectors_stortinget_votes_votering__voteringId_",
        "summary": "GET /api/connectors/stortinget-votes/votering/:voteringId (#3495) Voteringsresultat med per-represen",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget-votes/votering/[voteringId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStortingetVotesVotering",
                  "additionalProperties": false,
                  "description": "Resultatet av én votering i Stortinget: for/mot/ikke-tilstede, per-representant- stemmer og partifordeling.",
                  "required": [
                    "voteringId",
                    "dato",
                    "vedtatt",
                    "antallFor",
                    "antallMot",
                    "antallIkkeTilstede",
                    "stemmer",
                    "partifordeling",
                    "source"
                  ],
                  "properties": {
                    "voteringId": {
                      "type": "string",
                      "example": "12345"
                    },
                    "dato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2025-03-14"
                    },
                    "vedtatt": {
                      "type": [
                        "boolean",
                        "null"
                      ],
                      "example": true
                    },
                    "antallFor": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 88
                    },
                    "antallMot": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 81
                    },
                    "antallIkkeTilstede": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 0
                    },
                    "stemmer": {
                      "type": "array",
                      "description": "Per-representant-stemmer. Tom med `?stemmer=0`.",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "voteringId",
                          "representantId",
                          "navn",
                          "partiId",
                          "partiNavn",
                          "stemme"
                        ],
                        "properties": {
                          "voteringId": {
                            "type": "string",
                            "example": "12345"
                          },
                          "representantId": {
                            "type": "string",
                            "example": "ABC"
                          },
                          "navn": {
                            "type": "string",
                            "example": "Ola Nordmann"
                          },
                          "partiId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "A"
                          },
                          "partiNavn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Arbeiderpartiet"
                          },
                          "stemme": {
                            "type": "string",
                            "enum": [
                              "for",
                              "mot",
                              "ikke_tilstede"
                            ]
                          }
                        }
                      }
                    },
                    "partifordeling": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "partiId",
                          "partiNavn",
                          "for",
                          "mot",
                          "ikkeTilstede",
                          "total"
                        ],
                        "properties": {
                          "partiId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "A"
                          },
                          "partiNavn": {
                            "type": "string",
                            "example": "Arbeiderpartiet"
                          },
                          "for": {
                            "type": "integer",
                            "example": 48
                          },
                          "mot": {
                            "type": "integer",
                            "example": 0
                          },
                          "ikkeTilstede": {
                            "type": "integer",
                            "example": 0
                          },
                          "total": {
                            "type": "integer",
                            "example": 48
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "STORTINGET"
                      ]
                    },
                    "tittel": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Settes kun når `?sakId=` er gitt og voteringen finnes i saken."
                    },
                    "sakId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Settes kun når `?sakId=` er gitt."
                    },
                    "metadataNote": {
                      "type": "string",
                      "description": "Settes når `?sakId=` mangler, eller er gitt men uten treff."
                    },
                    "stemmerUtelatt": {
                      "type": "boolean",
                      "enum": [
                        true
                      ],
                      "description": "Til stede og `true` kun når `?stemmer=0` ble brukt."
                    }
                  },
                  "example": {
                    "voteringId": "12345",
                    "dato": "2025-03-14",
                    "vedtatt": true,
                    "antallFor": 88,
                    "antallMot": 81,
                    "antallIkkeTilstede": 0,
                    "stemmer": [
                      {
                        "voteringId": "12345",
                        "representantId": "ABC",
                        "navn": "Ola Nordmann",
                        "partiId": "A",
                        "partiNavn": "Arbeiderpartiet",
                        "stemme": "for"
                      }
                    ],
                    "partifordeling": [
                      {
                        "partiId": "A",
                        "partiNavn": "Arbeiderpartiet",
                        "for": 48,
                        "mot": 0,
                        "ikkeTilstede": 0,
                        "total": 48
                      }
                    ],
                    "source": "STORTINGET",
                    "metadataNote": "Oppgi ?sakId= for sakstittel."
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "voteringId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `voteringId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stortinget-votes/votering/{voteringId}/partifordeling": {
      "get": {
        "tags": [
          "connector:stortinget-votes"
        ],
        "operationId": "get_api_connectors_stortinget_votes_votering__voteringId__partifordeling",
        "summary": "GET /api/connectors/stortinget-votes/votering/:voteringId/partifordeling (#3495) Kun partifordeling-",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget-votes/votering/[voteringId]/partifordeling/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStortingetVotesPartifordeling",
                  "additionalProperties": false,
                  "description": "Partifordelingen for én votering i Stortinget (uten per-representant-stemmer): antall for/mot/ikke-tilstede aggregert per parti.",
                  "required": [
                    "voteringId",
                    "dato",
                    "vedtatt",
                    "antallFor",
                    "antallMot",
                    "antallIkkeTilstede",
                    "partifordeling",
                    "source"
                  ],
                  "properties": {
                    "voteringId": {
                      "type": "string",
                      "example": "12345"
                    },
                    "dato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2025-03-14"
                    },
                    "vedtatt": {
                      "type": [
                        "boolean",
                        "null"
                      ],
                      "example": true
                    },
                    "antallFor": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 88
                    },
                    "antallMot": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 81
                    },
                    "antallIkkeTilstede": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "example": 0
                    },
                    "partifordeling": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "partiId",
                          "partiNavn",
                          "for",
                          "mot",
                          "ikkeTilstede",
                          "total"
                        ],
                        "properties": {
                          "partiId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "A"
                          },
                          "partiNavn": {
                            "type": "string",
                            "example": "Arbeiderpartiet"
                          },
                          "for": {
                            "type": "integer",
                            "example": 48
                          },
                          "mot": {
                            "type": "integer",
                            "example": 0
                          },
                          "ikkeTilstede": {
                            "type": "integer",
                            "example": 0
                          },
                          "total": {
                            "type": "integer",
                            "example": 48
                          }
                        }
                      }
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "STORTINGET"
                      ]
                    }
                  },
                  "example": {
                    "voteringId": "12345",
                    "dato": "2025-03-14",
                    "vedtatt": true,
                    "antallFor": 88,
                    "antallMot": 81,
                    "antallIkkeTilstede": 0,
                    "partifordeling": [
                      {
                        "partiId": "A",
                        "partiNavn": "Arbeiderpartiet",
                        "for": 48,
                        "mot": 0,
                        "ikkeTilstede": 0,
                        "total": 48
                      }
                    ],
                    "source": "STORTINGET"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "voteringId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `voteringId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stortinget/cases": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_cases",
        "summary": "GET /api/connectors/stortinget/cases Query-params: sesjonId  (valgfri) — stortingssesjon, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/cases/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget/health": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_health",
        "summary": "GET /api/connectors/stortinget/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget/komiteer": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_komiteer",
        "summary": "GET /api/connectors/stortinget/komiteer Query-params: sesjonId  (valgfri) — sesjon/periode, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/komiteer/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget/komiteer/{komiteId}/members": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_komiteer__komiteId__members",
        "summary": "GET /api/connectors/stortinget/komiteer/:komiteId/members Returnerer representanter som sitter i en ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/komiteer/[komiteId]/members/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStortingetKomiteMembers",
                  "additionalProperties": false,
                  "description": "Medlemmene i en stortingskomité, med rolle, parti og fylke per representant.",
                  "required": [
                    "komiteId",
                    "medlemmer"
                  ],
                  "properties": {
                    "komiteId": {
                      "type": "string",
                      "example": "FINANS"
                    },
                    "komiteNavn": {
                      "type": "string",
                      "example": "Finanskomiteen"
                    },
                    "sesjonId": {
                      "type": "string",
                      "example": "2024-2025"
                    },
                    "medlemmer": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "representantId",
                          "fulltNavn",
                          "fornavn",
                          "etternavn",
                          "varaRepresentant"
                        ],
                        "properties": {
                          "representantId": {
                            "type": "string",
                            "example": "ABC"
                          },
                          "fulltNavn": {
                            "type": "string",
                            "example": "Ola Nordmann"
                          },
                          "fornavn": {
                            "type": "string",
                            "example": "Ola"
                          },
                          "etternavn": {
                            "type": "string",
                            "example": "Nordmann"
                          },
                          "partiId": {
                            "type": "string",
                            "example": "A"
                          },
                          "fylkeId": {
                            "type": "string",
                            "example": "Oslo"
                          },
                          "rolle": {
                            "type": "string",
                            "example": "Leder"
                          },
                          "rolleId": {
                            "type": "string",
                            "example": "leder"
                          },
                          "varaRepresentant": {
                            "type": "boolean",
                            "example": false
                          },
                          "komiteer": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "id",
                                "navn"
                              ],
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "example": "FINANS"
                                },
                                "navn": {
                                  "type": "string",
                                  "example": "Finanskomiteen"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "note": {
                      "type": "string",
                      "description": "Settes når komiteen finnes men ikke har sittende medlemmer."
                    }
                  },
                  "example": {
                    "komiteId": "FINANS",
                    "komiteNavn": "Finanskomiteen",
                    "sesjonId": "2024-2025",
                    "medlemmer": [
                      {
                        "representantId": "ABC",
                        "fulltNavn": "Ola Nordmann",
                        "fornavn": "Ola",
                        "etternavn": "Nordmann",
                        "partiId": "A",
                        "fylkeId": "Oslo",
                        "rolle": "Leder",
                        "rolleId": "leder",
                        "varaRepresentant": false,
                        "komiteer": [
                          {
                            "id": "FINANS",
                            "navn": "Finanskomiteen"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "komiteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `komiteId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stortinget/members": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_members",
        "summary": "GET /api/connectors/stortinget/members Query-params: periodeId  (valgfri) — stortingsperiode, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/members/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget/members/{id}": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_members__id_",
        "summary": "GET /api/connectors/stortinget/members/[id] Returnerer profil for én representant fra Stortinget Ope",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/members/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStortingetMember",
                  "additionalProperties": false,
                  "description": "Normalisert profil for én stortingsrepresentant fra Stortinget Open Data. Identitetsfelt og varastatus er alltid til stede; øvrige felt utelates når upstream mangler dem.",
                  "required": [
                    "id",
                    "etternavn",
                    "fornavn",
                    "fulltNavn",
                    "varaRepresentant"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Representantens id i Stortinget Open Data.",
                      "example": "ABCD"
                    },
                    "etternavn": {
                      "type": "string",
                      "description": "Etternavn (tom streng hvis upstream mangler det).",
                      "example": "Solberg"
                    },
                    "fornavn": {
                      "type": "string",
                      "description": "Fornavn (tom streng hvis upstream mangler det).",
                      "example": "Erna"
                    },
                    "fulltNavn": {
                      "type": "string",
                      "description": "Sammensatt \"fornavn etternavn\" (utledet ved normalisering).",
                      "example": "Erna Solberg"
                    },
                    "foedselsdato": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Fødselsdato (ISO-8601). Konvertert fra Microsoft JSON-datoformat. Utelatt når upstream ikke oppgir den.",
                      "example": "1961-02-24T00:00:00.000Z"
                    },
                    "doedsdato": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Dødsdato (ISO-8601) hvis registrert. Konvertert fra Microsoft JSON-datoformat. Vanligvis utelatt.",
                      "example": "2025-01-01T00:00:00.000Z"
                    },
                    "kjoenn": {
                      "type": "string",
                      "description": "Kjønn slik Stortinget oppgir det. Utelatt når det mangler.",
                      "example": "kvinne"
                    },
                    "partiId": {
                      "type": "string",
                      "description": "Parti-id (Stortingets kode for partiet). Utelatt når det mangler.",
                      "example": "H"
                    },
                    "fylkeId": {
                      "type": "string",
                      "description": "Fylke-id (Stortingets valgdistrikt-kode). Utelatt når det mangler.",
                      "example": "HO"
                    },
                    "varaRepresentant": {
                      "type": "boolean",
                      "description": "Sant hvis representanten er vararepresentant.",
                      "example": false
                    }
                  },
                  "example": {
                    "id": "ABCD",
                    "etternavn": "Solberg",
                    "fornavn": "Erna",
                    "fulltNavn": "Erna Solberg",
                    "foedselsdato": "1961-02-24T00:00:00.000Z",
                    "kjoenn": "kvinne",
                    "partiId": "H",
                    "fylkeId": "HO",
                    "varaRepresentant": false
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stortinget/sporsmal": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_sporsmal",
        "summary": "GET /api/connectors/stortinget/sporsmal Query-params: sesjonId  (valgfri) — stortingssesjon, f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/sporsmal/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget/voteringer": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_voteringer",
        "summary": "GET /api/connectors/stortinget/voteringer Query-params: voteringId  (påkrevd) — voteringsidentifikat",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/voteringer/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "voteringId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Voterings-ID (flere kan kommasepareres). Finn gyldige IDer via /voteringer/sak/{sakId}",
            "example": "12345"
          }
        ]
      }
    },
    "/api/connectors/stortinget/voteringer/recent": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_voteringer_recent",
        "summary": "GET /api/connectors/stortinget/voteringer/recent Lister siste voteringer på tvers av sakene i en sto",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/voteringer/recent/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stortinget/voteringer/sak/{sakId}": {
      "get": {
        "tags": [
          "connector:stortinget"
        ],
        "operationId": "get_api_connectors_stortinget_voteringer_sak__sakId_",
        "summary": "GET /api/connectors/stortinget/voteringer/sak/:sakId Lister alle voteringer for en gitt sakId fra St",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stortinget/voteringer/sak/[sakId]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorStortingetVoteringListe",
                  "additionalProperties": false,
                  "description": "Voteringene knyttet til en stortingssak (stortinget-connector), med vedtak- status som tekst + tellinger.",
                  "required": [
                    "sakId",
                    "voteringer"
                  ],
                  "properties": {
                    "sakId": {
                      "type": "string",
                      "example": "98765"
                    },
                    "voteringer": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "voteringId",
                          "vedtatt",
                          "vedtak",
                          "antallFor",
                          "antallMot",
                          "antallIkkeTilstede"
                        ],
                        "properties": {
                          "voteringId": {
                            "type": "string",
                            "example": "12345"
                          },
                          "dato": {
                            "type": "string",
                            "example": "2025-03-14"
                          },
                          "vedtatt": {
                            "type": "boolean",
                            "example": true
                          },
                          "vedtak": {
                            "type": "string",
                            "enum": [
                              "Vedtatt",
                              "Ikke vedtatt",
                              "Ukjent"
                            ]
                          },
                          "antallFor": {
                            "type": "integer",
                            "example": 88
                          },
                          "antallMot": {
                            "type": "integer",
                            "example": 81
                          },
                          "antallIkkeTilstede": {
                            "type": "integer",
                            "example": 0
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "sakId": "98765",
                    "voteringer": [
                      {
                        "voteringId": "12345",
                        "dato": "2025-03-14",
                        "vedtatt": true,
                        "vedtak": "Vedtatt",
                        "antallFor": 88,
                        "antallMot": 81,
                        "antallIkkeTilstede": 0
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "sakId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `sakId` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/stromprise/current": {
      "get": {
        "tags": [
          "connector:stromprise"
        ],
        "operationId": "get_api_connectors_stromprise_current",
        "summary": "GET /api/connectors/stromprise/current?area=NO1 Nåværende spotpris for ett eller flere prisområder.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stromprise/current/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stromprise/health": {
      "get": {
        "tags": [
          "connector:stromprise"
        ],
        "operationId": "get_api_connectors_stromprise_health",
        "summary": "GET /api/connectors/stromprise/health Smoke-route for Strømpris-connector (#1628).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stromprise/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/stromprise/prices": {
      "get": {
        "tags": [
          "connector:stromprise"
        ],
        "operationId": "get_api_connectors_stromprise_prices",
        "summary": "GET /api/connectors/stromprise/prices?area=NO1&date=2026-05-20  (single dag) GET /api/connectors/str",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/stromprise/prices/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NO1",
                "NO2",
                "NO3",
                "NO4",
                "NO5"
              ]
            },
            "description": "Prisområde",
            "example": "NO1"
          }
        ]
      }
    },
    "/api/connectors/swedac/accreditation/{number}": {
      "get": {
        "tags": [
          "connector:swedac"
        ],
        "operationId": "get_api_connectors_swedac_accreditation__number_",
        "summary": "GET /api/connectors/swedac/accreditation/{number} (#2639) Oppslag på Swedac akkrediteringsnummer.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/swedac/accreditation/[number]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorSwedacAccreditation",
                  "additionalProperties": false,
                  "description": "Én akkreditering utstedt av Swedac (Sveriges nationella ackrediteringsorgan). Brukes til due diligence / compliance (KYC/KYB) for å verifisere at en motpart har gyldig akkreditering.",
                  "required": [
                    "accreditationNumber",
                    "organizationName",
                    "accreditationType",
                    "standards",
                    "status"
                  ],
                  "properties": {
                    "accreditationNumber": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9-]{1,32}$",
                      "description": "Akkrediteringsnummer (Swedac-internt unikt).",
                      "example": "1234"
                    },
                    "organizationName": {
                      "type": "string",
                      "description": "Selskapsnavn.",
                      "example": "Exempel Laboratorium AB"
                    },
                    "organizationNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^\\d{6}-\\d{4}$",
                      "description": "Svensk organisasjonsnummer (kanonisk form 6 sifre + bindestrek + 4 sifre). Null hvis ukjent eller uparsbart.",
                      "example": "556677-8899"
                    },
                    "accreditationType": {
                      "type": "string",
                      "enum": [
                        "laboratory",
                        "certification-body",
                        "inspection-body",
                        "environmental-verifier",
                        "metrology",
                        "other"
                      ],
                      "description": "Type akkreditering (utledet av normalize).",
                      "example": "laboratory"
                    },
                    "standards": {
                      "type": "array",
                      "description": "Standarder akkrediteringen dekker (ISO/IEC 17025, ISO 17020 osv.). Tom liste hvis ingen oppgitt.",
                      "items": {
                        "type": "string",
                        "example": "ISO/IEC 17025"
                      },
                      "example": [
                        "ISO/IEC 17025"
                      ]
                    },
                    "scope": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Akkrediterings-omfang (kortbeskrivelse av aktivitetsfeltet). Null hvis ikke oppgitt.",
                      "example": "Kemisk analys av dricksvatten"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "suspended",
                        "withdrawn",
                        "expired",
                        "unknown"
                      ],
                      "description": "Akkrediteringsstatus (utledet av normalize; `unknown` når kilden ikke oppgir status).",
                      "example": "active"
                    },
                    "issuedAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                      "description": "Utstedt dato (ISO YYYY-MM-DD). Null hvis ukjent.",
                      "example": "2020-03-15"
                    },
                    "validUntil": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                      "description": "Gyldig til (ISO YYYY-MM-DD). Null hvis ikke tidsbegrenset/ukjent.",
                      "example": "2025-03-15"
                    },
                    "address": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Adresse (kort). Null hvis ikke oppgitt.",
                      "example": "Storgatan 1"
                    },
                    "city": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "By. Null hvis ikke oppgitt.",
                      "example": "Stockholm"
                    },
                    "postalCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Postnummer. Null hvis ikke oppgitt.",
                      "example": "11122"
                    }
                  },
                  "example": {
                    "accreditationNumber": "1234",
                    "organizationName": "Exempel Laboratorium AB",
                    "organizationNumber": "556677-8899",
                    "accreditationType": "laboratory",
                    "standards": [
                      "ISO/IEC 17025"
                    ],
                    "scope": "Kemisk analys av dricksvatten",
                    "status": "active",
                    "issuedAt": "2020-03-15",
                    "validUntil": "2025-03-15",
                    "address": "Storgatan 1",
                    "city": "Stockholm",
                    "postalCode": "11122"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `number` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/swedac/accreditations": {
      "get": {
        "tags": [
          "connector:swedac"
        ],
        "operationId": "get_api_connectors_swedac_accreditations",
        "summary": "GET /api/connectors/swedac/accreditations?q=&type=&status=&limit= (#2639) Søk i Swedacs register ove",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/swedac/accreditations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Maks antall treff",
            "example": "20"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk (organisasjonsnavn)",
            "example": "Kiwa"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "suspended",
                "withdrawn",
                "expired"
              ]
            },
            "description": "Status-filter (kanonisk slug — ikke svensk etikett)",
            "example": "active"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "laboratory",
                "certification-body",
                "inspection-body",
                "environmental-verifier",
                "metrology",
                "other"
              ]
            },
            "description": "Akkrediteringstype (kanonisk slug — ikke svensk etikett)",
            "example": "certification-body"
          }
        ]
      }
    },
    "/api/connectors/swedac/health": {
      "get": {
        "tags": [
          "connector:swedac"
        ],
        "operationId": "get_api_connectors_swedac_health",
        "summary": "GET /api/connectors/swedac/health (#2639)",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/swedac/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ted/health": {
      "get": {
        "tags": [
          "connector:ted"
        ],
        "operationId": "get_api_connectors_ted_health",
        "summary": "GET /api/connectors/ted/health Status for TED-connectoren (#1243).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ted/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ted/notices": {
      "get": {
        "tags": [
          "connector:ted"
        ],
        "operationId": "get_api_connectors_ted_notices",
        "summary": "GET /api/connectors/ted/notices?...",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ted/notices/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorTedNotices",
                  "additionalProperties": false,
                  "description": "Liste over TED-anskaffelsesvarsler (EU). Hvert varsel har CPV-koder, kjøper, frister og estimert verdi.",
                  "required": [
                    "notices"
                  ],
                  "properties": {
                    "notices": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "noticeId",
                          "cpvCodes"
                        ],
                        "properties": {
                          "noticeId": {
                            "type": "string",
                            "example": "123456-2025"
                          },
                          "publicationNumber": {
                            "type": "string",
                            "example": "123456-2025"
                          },
                          "title": {
                            "type": "string",
                            "example": "Rammeavtale IT-konsulenttjenester"
                          },
                          "publicationDate": {
                            "type": "string",
                            "example": "2025-04-01"
                          },
                          "submissionDeadline": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-05-15"
                          },
                          "buyerName": {
                            "type": "string",
                            "example": "Oslo kommune"
                          },
                          "buyerCountry": {
                            "type": "string",
                            "example": "NO"
                          },
                          "cpvCodes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "72000000"
                            ]
                          },
                          "contractNature": {
                            "type": "string",
                            "example": "Tjenester"
                          },
                          "procedureType": {
                            "type": "string",
                            "example": "Åpen anbudskonkurranse"
                          },
                          "noticeType": {
                            "type": "string"
                          },
                          "estimatedValue": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "example": 5000000
                          },
                          "estimatedValueCurrency": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "NOK"
                          },
                          "sourceUrl": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "totalNoticeCount": {
                      "type": "integer",
                      "minimum": 0,
                      "example": 1200
                    },
                    "links": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Paginerings-/HATEOAS-lenker (nøkkel → URL)."
                    }
                  },
                  "example": {
                    "notices": [
                      {
                        "noticeId": "123456-2025",
                        "publicationNumber": "123456-2025",
                        "title": "Rammeavtale IT-konsulenttjenester",
                        "publicationDate": "2025-04-01",
                        "submissionDeadline": "2025-05-15",
                        "buyerName": "Oslo kommune",
                        "buyerCountry": "NO",
                        "cpvCodes": [
                          "72000000"
                        ],
                        "contractNature": "Tjenester",
                        "procedureType": "Åpen anbudskonkurranse",
                        "noticeType": "Kunngjøring av konkurranse",
                        "estimatedValue": 5000000,
                        "estimatedValueCurrency": "NOK",
                        "sourceUrl": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2025:TEXT:EN:HTML"
                      }
                    ],
                    "totalNoticeCount": 1200,
                    "links": {
                      "self": "https://ted.europa.eu/api/v3/notices/search?page=1"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ted/notices/{id}": {
      "get": {
        "tags": [
          "connector:ted"
        ],
        "operationId": "get_api_connectors_ted_notices__id_",
        "summary": "GET /api/connectors/ted/notices/{id} Enkeltoppslag på TED notice-ID (#1243).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ted/notices/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorTedNotice",
                  "additionalProperties": false,
                  "description": "Ett anskaffelsesvarsel (notice) fra TED. Kjøper, frister, CPV-koder, prosedyretype og estimert verdi.",
                  "required": [
                    "noticeId",
                    "cpvCodes"
                  ],
                  "properties": {
                    "noticeId": {
                      "type": "string",
                      "example": "123456-2025"
                    },
                    "publicationNumber": {
                      "type": "string",
                      "example": "123456-2025"
                    },
                    "title": {
                      "type": "string",
                      "example": "Rammeavtale IT-konsulenttjenester"
                    },
                    "publicationDate": {
                      "type": "string",
                      "example": "2025-04-01"
                    },
                    "submissionDeadline": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2025-05-15"
                    },
                    "buyerName": {
                      "type": "string",
                      "example": "Oslo kommune"
                    },
                    "buyerCountry": {
                      "type": "string",
                      "description": "ISO-landkode (2–3 tegn).",
                      "example": "NO"
                    },
                    "cpvCodes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "CPV-koder (alltid til stede, kan være tom).",
                      "example": [
                        "72000000"
                      ]
                    },
                    "contractNature": {
                      "type": "string",
                      "example": "Tjenester"
                    },
                    "procedureType": {
                      "type": "string",
                      "example": "Åpen anbudskonkurranse"
                    },
                    "noticeType": {
                      "type": "string",
                      "example": "Kunngjøring av konkurranse"
                    },
                    "estimatedValue": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 5000000
                    },
                    "estimatedValueCurrency": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-valutakode (3 tegn).",
                      "example": "NOK"
                    },
                    "sourceUrl": {
                      "type": "string",
                      "example": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2025:TEXT:EN:HTML"
                    }
                  },
                  "example": {
                    "noticeId": "123456-2025",
                    "publicationNumber": "123456-2025",
                    "title": "Rammeavtale IT-konsulenttjenester",
                    "publicationDate": "2025-04-01",
                    "submissionDeadline": "2025-05-15",
                    "buyerName": "Oslo kommune",
                    "buyerCountry": "NO",
                    "cpvCodes": [
                      "72000000"
                    ],
                    "contractNature": "Tjenester",
                    "procedureType": "Åpen anbudskonkurranse",
                    "noticeType": "Kunngjøring av konkurranse",
                    "estimatedValue": 5000000,
                    "estimatedValueCurrency": "NOK",
                    "sourceUrl": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2025:TEXT:EN:HTML"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/toll/health": {
      "get": {
        "tags": [
          "connector:toll"
        ],
        "operationId": "get_api_connectors_toll_health",
        "summary": "GET /api/connectors/toll/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/toll/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/toll/tariff": {
      "get": {
        "tags": [
          "connector:toll"
        ],
        "operationId": "get_api_connectors_toll_tariff",
        "summary": "GET /api/connectors/toll/tariff?code={hs_code}  OR  ?q={query} Søk i norsk tolltariff (HS-koder og v",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/toll/tariff/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "HS-/tolltariffkode (varenummer)",
            "example": "0901"
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/tolletaten/datasets": {
      "get": {
        "tags": [
          "connector:tolletaten"
        ],
        "operationId": "get_api_connectors_tolletaten_datasets",
        "summary": "GET /api/connectors/tolletaten/datasets?q=&rows=&start= (#1769).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/tolletaten/datasets/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/tolletaten/health": {
      "get": {
        "tags": [
          "connector:tolletaten"
        ],
        "operationId": "get_api_connectors_tolletaten_health",
        "summary": "GET /api/connectors/tolletaten/health (#1769).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/tolletaten/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/tolletaten/search": {
      "get": {
        "tags": [
          "connector:tolletaten"
        ],
        "operationId": "get_api_connectors_tolletaten_search",
        "summary": "GET /api/connectors/tolletaten/search?resource_id=&q=&limit=&offset= (#1769).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/tolletaten/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "20"
            },
            "description": "Antall rader"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            },
            "description": "Paginerings-offset"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fritekstsøk i ressursen",
            "example": "kaffe"
          },
          {
            "name": "resource_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "CKAN resource-ID (alias: datasetId) — hentes fra /datasets-responsen (datastoreActive=true)",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ]
      }
    },
    "/api/connectors/trafikstyrelsen-dk/departures": {
      "get": {
        "tags": [
          "connector:trafikstyrelsen-dk"
        ],
        "operationId": "get_api_connectors_trafikstyrelsen_dk_departures",
        "summary": "GET /api/connectors/trafikstyrelsen-dk/departures",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikstyrelsen-dk/departures/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikstyrelsen-dk/health": {
      "get": {
        "tags": [
          "connector:trafikstyrelsen-dk"
        ],
        "operationId": "get_api_connectors_trafikstyrelsen_dk_health",
        "summary": "GET /api/connectors/trafikstyrelsen-dk/health `?deep=1` gjør én minimal upstream-probe mot rejseplan",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikstyrelsen-dk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikstyrelsen-dk/journey": {
      "get": {
        "tags": [
          "connector:trafikstyrelsen-dk"
        ],
        "operationId": "get_api_connectors_trafikstyrelsen_dk_journey",
        "summary": "GET /api/connectors/trafikstyrelsen-dk/journey",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikstyrelsen-dk/journey/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikstyrelsen-dk/stops": {
      "get": {
        "tags": [
          "connector:trafikstyrelsen-dk"
        ],
        "operationId": "get_api_connectors_trafikstyrelsen_dk_stops",
        "summary": "GET /api/connectors/trafikstyrelsen-dk/stops",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikstyrelsen-dk/stops/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikverket/health": {
      "get": {
        "tags": [
          "connector:trafikverket"
        ],
        "operationId": "get_api_connectors_trafikverket_health",
        "summary": "GET /api/connectors/trafikverket/health `?deep=1` gjør én minimal upstream-probe mot api.trafikinfo.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikverket/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikverket/road-conditions": {
      "get": {
        "tags": [
          "connector:trafikverket"
        ],
        "operationId": "get_api_connectors_trafikverket_road_conditions",
        "summary": "GET /api/connectors/trafikverket/road-conditions",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikverket/road-conditions/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikverket/situations": {
      "get": {
        "tags": [
          "connector:trafikverket"
        ],
        "operationId": "get_api_connectors_trafikverket_situations",
        "summary": "GET /api/connectors/trafikverket/situations",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikverket/situations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikverket/train-departures": {
      "get": {
        "tags": [
          "connector:trafikverket"
        ],
        "operationId": "get_api_connectors_trafikverket_train_departures",
        "summary": "GET /api/connectors/trafikverket/train-departures",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikverket/train-departures/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/trafikverket/train-stations": {
      "get": {
        "tags": [
          "connector:trafikverket"
        ],
        "operationId": "get_api_connectors_trafikverket_train_stations",
        "summary": "GET /api/connectors/trafikverket/train-stations",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/trafikverket/train-stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/udi/health": {
      "get": {
        "tags": [
          "connector:udi"
        ],
        "operationId": "get_api_connectors_udi_health",
        "summary": "GET /api/connectors/udi/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/udi/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/udi/series": {
      "get": {
        "tags": [
          "connector:udi"
        ],
        "operationId": "get_api_connectors_udi_series",
        "summary": "GET /api/connectors/udi/series",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/udi/series/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/udi/statistics/{series}": {
      "get": {
        "tags": [
          "connector:udi"
        ],
        "operationId": "get_api_connectors_udi_statistics__series_",
        "summary": "GET /api/connectors/udi/statistics/{series}",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/udi/statistics/[series]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorUdiStatistics",
                  "additionalProperties": false,
                  "description": "Normalisert UDI-statistikk for én serie og ett regnskapsår, i kanonisk langform (én rad per periode × kategori).",
                  "required": [
                    "series",
                    "seriesTitle",
                    "topic",
                    "year",
                    "dimension",
                    "periods",
                    "categories",
                    "rows",
                    "rowCount",
                    "unit",
                    "source",
                    "sourceUrl",
                    "fetchedAt"
                  ],
                  "properties": {
                    "series": {
                      "type": "string",
                      "description": "Stabil serie-id (matcher `{series}`-stien).",
                      "example": "asylsoknader"
                    },
                    "seriesTitle": {
                      "type": "string",
                      "description": "Lesbar tittel for serien.",
                      "example": "Asylsøknader etter statsborgerskap og måned"
                    },
                    "topic": {
                      "type": "string",
                      "enum": [
                        "asyl",
                        "arbeid",
                        "familie",
                        "visum"
                      ],
                      "description": "Tema-merkelapp for serien.",
                      "example": "asyl"
                    },
                    "year": {
                      "type": "integer",
                      "minimum": 2020,
                      "description": "Regnskapsåret statistikken gjelder.",
                      "example": 2024
                    },
                    "dimension": {
                      "type": "string",
                      "description": "Dimensjonsnavn fra tabellens første kolonneoverskrift (f.eks. statsborgerskap). Faller tilbake til «Kategori» ved tomt hode.",
                      "example": "Statsborgerskap"
                    },
                    "periods": {
                      "type": "array",
                      "description": "Periode-etiketter fra tabellhodet (total-kolonner ekskludert).",
                      "items": {
                        "type": "string",
                        "example": "Jan"
                      },
                      "example": [
                        "Jan",
                        "Feb",
                        "Mar"
                      ]
                    },
                    "categories": {
                      "type": "array",
                      "description": "Distinkte kategorier fra første kolonne (total-rader ekskludert).",
                      "items": {
                        "type": "string",
                        "example": "Syria"
                      },
                      "example": [
                        "Syria",
                        "Afghanistan"
                      ]
                    },
                    "rows": {
                      "type": "array",
                      "description": "Langform-rader — kryssproduktet (periode × kategori).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "period",
                          "category",
                          "value",
                          "unit",
                          "sourceUrl"
                        ],
                        "description": "Én normalisert statistikk-rad.",
                        "properties": {
                          "period": {
                            "type": "string",
                            "description": "Periode-etikett fra tabellhodet.",
                            "example": "Jan"
                          },
                          "category": {
                            "type": "string",
                            "description": "Dimensjonsverdi fra første kolonne.",
                            "example": "Syria"
                          },
                          "value": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "description": "Tallverdi — `null` der UDI har tomt felt eller «..».",
                            "example": 123
                          },
                          "unit": {
                            "type": "string",
                            "enum": [
                              "personer"
                            ],
                            "description": "Måleenhet — alltid «personer».",
                            "example": "personer"
                          },
                          "sourceUrl": {
                            "type": "string",
                            "format": "uri",
                            "description": "Lenke til UDI-tabellsiden raden er hentet fra.",
                            "example": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
                          }
                        }
                      }
                    },
                    "rowCount": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Antall rader i `rows`.",
                      "example": 6
                    },
                    "unit": {
                      "type": "string",
                      "enum": [
                        "personer"
                      ],
                      "description": "Måleenhet for alle verdier — alltid «personer».",
                      "example": "personer"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "udi"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "udi"
                    },
                    "sourceUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "UDI-tabellsiden serien er høstet fra.",
                      "example": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Tidspunkt for normalisering (ISO-8601 UTC).",
                      "example": "2026-06-24T08:30:00.000Z"
                    }
                  },
                  "example": {
                    "series": "asylsoknader",
                    "seriesTitle": "Asylsøknader etter statsborgerskap og måned",
                    "topic": "asyl",
                    "year": 2024,
                    "dimension": "Statsborgerskap",
                    "periods": [
                      "Jan",
                      "Feb",
                      "Mar"
                    ],
                    "categories": [
                      "Syria",
                      "Afghanistan"
                    ],
                    "rows": [
                      {
                        "period": "Jan",
                        "category": "Syria",
                        "value": 123,
                        "unit": "personer",
                        "sourceUrl": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
                      },
                      {
                        "period": "Feb",
                        "category": "Syria",
                        "value": null,
                        "unit": "personer",
                        "sourceUrl": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
                      }
                    ],
                    "rowCount": 6,
                    "unit": "personer",
                    "source": "udi",
                    "sourceUrl": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/",
                    "fetchedAt": "2026-06-24T08:30:00.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "series",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `series` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/udir/health": {
      "get": {
        "tags": [
          "connector:udir"
        ],
        "operationId": "get_api_connectors_udir_health",
        "summary": "GET /api/connectors/udir/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/udir/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/udir/schools": {
      "get": {
        "tags": [
          "connector:udir"
        ],
        "operationId": "get_api_connectors_udir_schools",
        "summary": "GET /api/connectors/udir/schools?municipality=0301 Henter skoleoversikt fra Utdanningsdirektoratets ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/udir/schools/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "county",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fylkesnummer",
            "example": "03"
          },
          {
            "name": "municipality",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "description": "Kommunenummer (minst én av municipality/county)",
            "example": "0301"
          }
        ]
      }
    },
    "/api/connectors/upphandling-se/dataset/{id}": {
      "get": {
        "tags": [
          "connector:upphandling-se"
        ],
        "operationId": "get_api_connectors_upphandling_se_dataset__id_",
        "summary": "GET /api/connectors/upphandling-se/dataset/{id} (#1193).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/upphandling-se/dataset/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanDataset",
                  "additionalProperties": false,
                  "description": "Ett normalisert datasett fra et CKAN-register: metadata, tagger og ressurser (distribusjoner).",
                  "required": [
                    "id",
                    "name",
                    "title",
                    "description",
                    "organization",
                    "license",
                    "modified",
                    "created",
                    "tags",
                    "resources"
                  ],
                  "properties": {
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "abc-123"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "upphandlingar-2024"
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Upphandlingar 2024"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "organization": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Upphandlingsmyndigheten"
                    },
                    "license": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "CC0-1.0"
                    },
                    "modified": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2025-01-10"
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "2024-02-01"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "upphandling"
                      ]
                    },
                    "resources": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "format",
                          "url"
                        ],
                        "properties": {
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CSV"
                          },
                          "format": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CSV"
                          },
                          "url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "https://example.se/data.csv"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "id": "abc-123",
                    "name": "upphandlingar-2024",
                    "title": "Upphandlingar 2024",
                    "description": "Offentliga upphandlingar.",
                    "organization": "Upphandlingsmyndigheten",
                    "license": "CC0-1.0",
                    "modified": "2025-01-10",
                    "created": "2024-02-01",
                    "tags": [
                      "upphandling"
                    ],
                    "resources": [
                      {
                        "name": "CSV",
                        "format": "CSV",
                        "url": "https://example.se/data.csv"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ],
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/upphandling-se/health": {
      "get": {
        "tags": [
          "connector:upphandling-se"
        ],
        "operationId": "get_api_connectors_upphandling_se_health",
        "summary": "GET /api/connectors/upphandling-se/health (#1193, #2029).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/upphandling-se/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/upphandling-se/organisations": {
      "get": {
        "tags": [
          "connector:upphandling-se"
        ],
        "operationId": "get_api_connectors_upphandling_se_organisations",
        "summary": "GET /api/connectors/upphandling-se/organisations (#1193).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/upphandling-se/organisations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanOrganisations",
                  "additionalProperties": false,
                  "description": "Liste over organisasjons-slugs/navn i et CKAN-register (fra `organization_list`).",
                  "required": [
                    "organisations"
                  ],
                  "properties": {
                    "organisations": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "ilmatieteen-laitos",
                        "tilastokeskus"
                      ]
                    }
                  },
                  "example": {
                    "organisations": [
                      "ilmatieteen-laitos",
                      "tilastokeskus"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/upphandling-se/search": {
      "get": {
        "tags": [
          "connector:upphandling-se"
        ],
        "operationId": "get_api_connectors_upphandling_se_search",
        "summary": "GET /api/connectors/upphandling-se/search?q=&rows=&start= (#1193).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/upphandling-se/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorCkanDatasetSearch",
                  "additionalProperties": false,
                  "description": "Paginert datasett-søkeside fra et CKAN-basert åpen-data-register. Hvert datasett har organisasjon, lisens, tagger og ressurser (distribusjoner).",
                  "required": [
                    "datasets",
                    "count",
                    "rows",
                    "start"
                  ],
                  "properties": {
                    "datasets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "name",
                          "title",
                          "description",
                          "organization",
                          "license",
                          "modified",
                          "created",
                          "tags",
                          "resources"
                        ],
                        "properties": {
                          "id": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "abc-123"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "vaerdata-2024"
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Værdata 2024"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "organization": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Ilmatieteen laitos"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "CC-BY-4.0"
                          },
                          "modified": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2025-01-10"
                          },
                          "created": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "2024-02-01"
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "vær",
                              "klima"
                            ]
                          },
                          "resources": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "name",
                                "format",
                                "url"
                              ],
                              "properties": {
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV-fil"
                                },
                                "format": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "CSV"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "example": "https://example.org/data.csv"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "Totalt antall treff upstream.",
                      "example": 120
                    },
                    "rows": {
                      "type": "integer",
                      "description": "Sidestørrelse (limit).",
                      "example": 20
                    },
                    "start": {
                      "type": "integer",
                      "description": "Offset.",
                      "example": 0
                    }
                  },
                  "example": {
                    "datasets": [
                      {
                        "id": "abc-123",
                        "name": "vaerdata-2024",
                        "title": "Værdata 2024",
                        "description": "Observasjoner per stasjon.",
                        "organization": "Ilmatieteen laitos",
                        "license": "CC-BY-4.0",
                        "modified": "2025-01-10",
                        "created": "2024-02-01",
                        "tags": [
                          "vær",
                          "klima"
                        ],
                        "resources": [
                          {
                            "name": "CSV-fil",
                            "format": "CSV",
                            "url": "https://example.org/data.csv"
                          }
                        ]
                      }
                    ],
                    "count": 120,
                    "rows": 20,
                    "start": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-sunset": true
      }
    },
    "/api/connectors/valgdatabasen-dk/elections": {
      "get": {
        "tags": [
          "connector:valgdatabasen-dk"
        ],
        "operationId": "get_api_connectors_valgdatabasen_dk_elections",
        "summary": "GET /api/connectors/valgdatabasen-dk/elections Lister de fem danske valgtypene med tilgjengelige val",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valgdatabasen-dk/elections/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/valgdatabasen-dk/health": {
      "get": {
        "tags": [
          "connector:valgdatabasen-dk"
        ],
        "operationId": "get_api_connectors_valgdatabasen_dk_health",
        "summary": "GET /api/connectors/valgdatabasen-dk/health Default: statisk metadata (issue #1206).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valgdatabasen-dk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/valgdatabasen-dk/results": {
      "get": {
        "tags": [
          "connector:valgdatabasen-dk"
        ],
        "operationId": "get_api_connectors_valgdatabasen_dk_results",
        "summary": "GET /api/connectors/valgdatabasen-dk/results?type=&year=&area= Partifordeling (stemmeandel per parti",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valgdatabasen-dk/results/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "folketing",
                "kommune",
                "region",
                "europa",
                "folkeafstemning"
              ]
            },
            "description": "Valgtype",
            "example": "folketing"
          },
          {
            "name": "year",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "pattern": "^\\d{4}$"
            },
            "description": "4-sifret valg-år",
            "example": "2022"
          }
        ]
      }
    },
    "/api/connectors/valgdatabasen-dk/turnout": {
      "get": {
        "tags": [
          "connector:valgdatabasen-dk"
        ],
        "operationId": "get_api_connectors_valgdatabasen_dk_turnout",
        "summary": "GET /api/connectors/valgdatabasen-dk/turnout?type=&year= Valgdeltakelse (stemmeprocent m.m.) for en ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valgdatabasen-dk/turnout/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "folketing",
                "kommune",
                "region",
                "europa",
                "folkeafstemning"
              ]
            },
            "description": "Valgtype",
            "example": "folketing"
          },
          {
            "name": "year",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "pattern": "^\\d{4}$"
            },
            "description": "4-sifret valg-år",
            "example": "2022"
          }
        ]
      }
    },
    "/api/connectors/valmyndigheten/elections": {
      "get": {
        "tags": [
          "connector:valmyndigheten"
        ],
        "operationId": "get_api_connectors_valmyndigheten_elections",
        "summary": "GET /api/connectors/valmyndigheten/elections Statisk katalog over tilgjengelige valg (valtype + år).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valmyndigheten/elections/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/valmyndigheten/health": {
      "get": {
        "tags": [
          "connector:valmyndigheten"
        ],
        "operationId": "get_api_connectors_valmyndigheten_health",
        "summary": "GET /api/connectors/valmyndigheten/health Default: statisk metadata.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valmyndigheten/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/valmyndigheten/results": {
      "get": {
        "tags": [
          "connector:valmyndigheten"
        ],
        "operationId": "get_api_connectors_valmyndigheten_results",
        "summary": "GET /api/connectors/valmyndigheten/results?valtype=RD&year=2022&area=riket Partiresultater (stemmer,",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valmyndigheten/results/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geografisk område (default: riket)",
            "example": "riket"
          },
          {
            "name": "valtype",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "RD",
                "KF",
                "RE",
                "EU"
              ]
            },
            "description": "Valgtype (Riksdag/Kommun/Region/EU)",
            "example": "RD"
          },
          {
            "name": "year",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "Valgår",
            "example": "2022"
          }
        ]
      }
    },
    "/api/connectors/valmyndigheten/turnout": {
      "get": {
        "tags": [
          "connector:valmyndigheten"
        ],
        "operationId": "get_api_connectors_valmyndigheten_turnout",
        "summary": "GET /api/connectors/valmyndigheten/turnout?valtype=RD&year=2022&area=riket Valgdeltakelse (stemmeber",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/valmyndigheten/turnout/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geografisk område (default: riket)",
            "example": "riket"
          },
          {
            "name": "valtype",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "RD",
                "KF",
                "RE",
                "EU"
              ]
            },
            "description": "Valgtype",
            "example": "RD"
          },
          {
            "name": "year",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "Valgår",
            "example": "2022"
          }
        ]
      }
    },
    "/api/connectors/vegvesen/health": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_health",
        "summary": "GET /api/connectors/vegvesen/health Status for Statens vegvesen connectoren (#630, #1990, #2173, #28",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vegvesen/traffic-stations": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_traffic_stations",
        "summary": "GET /api/connectors/vegvesen/traffic-stations Henter trafikkregistreringsstasjoner fra NVDB (type 88",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/traffic-stations/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vegvesen/trafikk": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_trafikk",
        "summary": "GET /api/connectors/vegvesen/trafikk",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/trafikk/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vegvesen/trafikk/health": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_trafikk_health",
        "summary": "GET /api/connectors/vegvesen/trafikk/health Smoke-route for Vegvesen Trafikkdata-connector.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/trafikk/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vegvesen/trafikk/points": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_trafikk_points",
        "summary": "GET /api/connectors/vegvesen/trafikk/points Trafikkregistreringspunkt fra Vegvesen Trafikkdata Graph",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/trafikk/points/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vegvesen/trafikk/volume": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_trafikk_volume",
        "summary": "GET /api/connectors/vegvesen/trafikk/volume Aggregert trafikkmengde per registreringspunkt og tidsin",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/trafikk/volume/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "description": "Fra-dato (YYYY-MM-DD, UTC). Maks 31 dager for time, 366 for dag.",
            "example": "2024-01-01"
          },
          {
            "name": "pointId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trafikkregistreringspunkt-ID",
            "example": "97411V384607"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "description": "Til-dato (YYYY-MM-DD, UTC).",
            "example": "2024-01-07"
          }
        ]
      }
    },
    "/api/connectors/vegvesen/vehicles": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_vehicles",
        "summary": "GET /api/connectors/vegvesen/vehicles",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/vehicles/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vegvesen/vehicles/{regnr}": {
      "get": {
        "tags": [
          "connector:vegvesen"
        ],
        "operationId": "get_api_connectors_vegvesen_vehicles__regnr_",
        "summary": "GET /api/connectors/vegvesen/vehicles/[regnr] Henter kjøretøydata for et norsk kjennemerke fra State",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vegvesen/vehicles/[regnr]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorVegvesenVehicle",
                  "additionalProperties": false,
                  "description": "Ett kjøretøy slått opp på norsk registreringsnummer (Autosys). Merke, drivstoff, CO2-utslipp, totalvekt og heftelse-/tilbakekallingsstatus.",
                  "required": [
                    "regnr",
                    "merke",
                    "handelsbetegnelse",
                    "forstegangsregistrertNorge",
                    "kjoretoyKlasse",
                    "kjoretoyKlasseBeskrivelse",
                    "drivstoff",
                    "co2Utslipp",
                    "tillattTotalvekt",
                    "registreringsstatus",
                    "erHeftet",
                    "erTilbakekalt"
                  ],
                  "properties": {
                    "regnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "EL12345"
                    },
                    "merke": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "TESLA"
                    },
                    "handelsbetegnelse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "MODEL Y"
                    },
                    "forstegangsregistrertNorge": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-dato for førstegangsregistrering i Norge.",
                      "example": "2023-03-15"
                    },
                    "kjoretoyKlasse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "M1"
                    },
                    "kjoretoyKlasseBeskrivelse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Personbil"
                    },
                    "drivstoff": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Elektrisk"
                    },
                    "co2Utslipp": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "CO2-utslipp i g/km.",
                      "example": 0
                    },
                    "tillattTotalvekt": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Tillatt totalvekt i kg.",
                      "example": 2500
                    },
                    "registreringsstatus": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Registrert"
                    },
                    "erHeftet": {
                      "type": "boolean",
                      "description": "Om kjøretøyet har registrert heftelse.",
                      "example": false
                    },
                    "erTilbakekalt": {
                      "type": "boolean",
                      "description": "Om kjøretøyet er tilbakekalt.",
                      "example": false
                    }
                  },
                  "example": {
                    "regnr": "EL12345",
                    "merke": "TESLA",
                    "handelsbetegnelse": "MODEL Y",
                    "forstegangsregistrertNorge": "2023-03-15",
                    "kjoretoyKlasse": "M1",
                    "kjoretoyKlasseBeskrivelse": "Personbil",
                    "drivstoff": "Elektrisk",
                    "co2Utslipp": 0,
                    "tillattTotalvekt": 2500,
                    "registreringsstatus": "Registrert",
                    "erHeftet": false,
                    "erTilbakekalt": false
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "regnr",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `regnr` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/vinnova/calls": {
      "get": {
        "tags": [
          "connector:vinnova"
        ],
        "operationId": "get_api_connectors_vinnova_calls",
        "summary": "GET /api/connectors/vinnova/calls",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vinnova/calls/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vinnova/grants": {
      "get": {
        "tags": [
          "connector:vinnova"
        ],
        "operationId": "get_api_connectors_vinnova_grants",
        "summary": "GET /api/connectors/vinnova/grants",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vinnova/grants/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vinnova/health": {
      "get": {
        "tags": [
          "connector:vinnova"
        ],
        "operationId": "get_api_connectors_vinnova_health",
        "summary": "GET /api/connectors/vinnova/health Vinnova er et åpent API uten nøkkel.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vinnova/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vlaamse-codex/document/{id}": {
      "get": {
        "tags": [
          "connector:vlaamse-codex"
        ],
        "operationId": "get_api_connectors_vlaamse_codex_document__id_",
        "summary": "GET /api/connectors/vlaamse-codex/document/{id} (#4238).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vlaamse-codex/document/[id]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorVlaamseCodexDocument",
                  "additionalProperties": false,
                  "description": "Normalisert dokument fra Vlaamse Codex (Flanderns konsoliderte lovgivning), NL-felt mappet til kanoniske EN-felt.",
                  "required": [
                    "id",
                    "title",
                    "date",
                    "publishedAt",
                    "documentType",
                    "hasContent",
                    "isFederal",
                    "numac",
                    "versionIds",
                    "country",
                    "region",
                    "source",
                    "apiUrl"
                  ],
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "Numerisk dokument-id (kanonisk).",
                      "example": 1042042
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Tittel (`Opschrift`).",
                      "example": "Besluit van de Vlaamse Regering tot wijziging …"
                    },
                    "date": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date-time",
                      "description": "Vedtaksdato (ISO-8601).",
                      "example": "2026-05-21T00:00:00.000Z"
                    },
                    "publishedAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date-time",
                      "description": "Publikasjonsdato i Belgisch Staatsblad (ISO-8601).",
                      "example": "2026-06-01T00:00:00.000Z"
                    },
                    "documentType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Ministerieel besluit"
                    },
                    "hasContent": {
                      "type": "boolean",
                      "description": "Har konsolidert innhold/artikler.",
                      "example": true
                    },
                    "isFederal": {
                      "type": "boolean",
                      "example": false
                    },
                    "numac": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "NUMAC-identifikator i Belgisch Staatsblad.",
                      "example": "2026012345"
                    },
                    "versionIds": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      },
                      "example": [
                        1543632
                      ]
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "BE"
                      ],
                      "example": "BE"
                    },
                    "region": {
                      "type": "string",
                      "enum": [
                        "Vlaanderen"
                      ],
                      "example": "Vlaanderen"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "vlaamse-codex"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "vlaamse-codex"
                    },
                    "apiUrl": {
                      "type": "string",
                      "description": "Deterministisk API-resurs-URL for dokumentet.",
                      "example": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
                    }
                  },
                  "example": {
                    "id": 1042042,
                    "title": "Besluit van de Vlaamse Regering tot wijziging …",
                    "date": "2026-05-21T00:00:00.000Z",
                    "publishedAt": "2026-06-01T00:00:00.000Z",
                    "documentType": "Ministerieel besluit",
                    "hasContent": true,
                    "isFederal": false,
                    "numac": "2026012345",
                    "versionIds": [
                      1543632
                    ],
                    "country": "BE",
                    "region": "Vlaanderen",
                    "source": "vlaamse-codex",
                    "apiUrl": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `id` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/vlaamse-codex/health": {
      "get": {
        "tags": [
          "connector:vlaamse-codex"
        ],
        "operationId": "get_api_connectors_vlaamse_codex_health",
        "summary": "GET /api/connectors/vlaamse-codex/health (#4238).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vlaamse-codex/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/vlaamse-codex/search": {
      "get": {
        "tags": [
          "connector:vlaamse-codex"
        ],
        "operationId": "get_api_connectors_vlaamse_codex_search",
        "summary": "GET /api/connectors/vlaamse-codex/search?q=…&skip=&take= (#4238).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vlaamse-codex/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorVlaamseCodexSearch",
                  "additionalProperties": false,
                  "description": "Paginert søkeresultat av wetgevingsdokumenter i Vlaamse Codex.",
                  "required": [
                    "query",
                    "foundDocuments",
                    "foundArticles",
                    "skip",
                    "take",
                    "documents",
                    "count"
                  ],
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "milieu"
                    },
                    "foundDocuments": {
                      "type": "integer",
                      "description": "Totalt antall dokumenter som matcher (upstream-teller).",
                      "example": 1646
                    },
                    "foundArticles": {
                      "type": "integer",
                      "description": "Totalt antall matchende artikler (upstream-teller).",
                      "example": 4334
                    },
                    "skip": {
                      "type": "integer",
                      "example": 0
                    },
                    "take": {
                      "type": "integer",
                      "example": 25
                    },
                    "count": {
                      "type": "integer",
                      "description": "Antall dokumenter i denne siden (`documents.length`).",
                      "example": 25
                    },
                    "documents": {
                      "type": "array",
                      "description": "Normaliserte dokumenter (samme form som document-oppslaget).",
                      "items": {
                        "type": "object",
                        "title": "ConnectorVlaamseCodexDocument",
                        "additionalProperties": false,
                        "description": "Normalisert dokument fra Vlaamse Codex (Flanderns konsoliderte lovgivning), NL-felt mappet til kanoniske EN-felt.",
                        "required": [
                          "id",
                          "title",
                          "date",
                          "publishedAt",
                          "documentType",
                          "hasContent",
                          "isFederal",
                          "numac",
                          "versionIds",
                          "country",
                          "region",
                          "source",
                          "apiUrl"
                        ],
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "Numerisk dokument-id (kanonisk).",
                            "example": 1042042
                          },
                          "title": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Tittel (`Opschrift`).",
                            "example": "Besluit van de Vlaamse Regering tot wijziging …"
                          },
                          "date": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time",
                            "description": "Vedtaksdato (ISO-8601).",
                            "example": "2026-05-21T00:00:00.000Z"
                          },
                          "publishedAt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time",
                            "description": "Publikasjonsdato i Belgisch Staatsblad (ISO-8601).",
                            "example": "2026-06-01T00:00:00.000Z"
                          },
                          "documentType": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Ministerieel besluit"
                          },
                          "hasContent": {
                            "type": "boolean",
                            "description": "Har konsolidert innhold/artikler.",
                            "example": true
                          },
                          "isFederal": {
                            "type": "boolean",
                            "example": false
                          },
                          "numac": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "NUMAC-identifikator i Belgisch Staatsblad.",
                            "example": "2026012345"
                          },
                          "versionIds": {
                            "type": "array",
                            "items": {
                              "type": "integer"
                            },
                            "example": [
                              1543632
                            ]
                          },
                          "country": {
                            "type": "string",
                            "enum": [
                              "BE"
                            ],
                            "example": "BE"
                          },
                          "region": {
                            "type": "string",
                            "enum": [
                              "Vlaanderen"
                            ],
                            "example": "Vlaanderen"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "vlaamse-codex"
                            ],
                            "description": "Proveniens (#74 explainability).",
                            "example": "vlaamse-codex"
                          },
                          "apiUrl": {
                            "type": "string",
                            "description": "Deterministisk API-resurs-URL for dokumentet.",
                            "example": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
                          }
                        },
                        "example": {
                          "id": 1042042,
                          "title": "Besluit van de Vlaamse Regering tot wijziging …",
                          "date": "2026-05-21T00:00:00.000Z",
                          "publishedAt": "2026-06-01T00:00:00.000Z",
                          "documentType": "Ministerieel besluit",
                          "hasContent": true,
                          "isFederal": false,
                          "numac": "2026012345",
                          "versionIds": [
                            1543632
                          ],
                          "country": "BE",
                          "region": "Vlaanderen",
                          "source": "vlaamse-codex",
                          "apiUrl": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
                        }
                      }
                    }
                  },
                  "example": {
                    "query": "milieu",
                    "foundDocuments": 1646,
                    "foundArticles": 4334,
                    "skip": 0,
                    "take": 1,
                    "count": 1,
                    "documents": [
                      {
                        "id": 1042042,
                        "title": "Ministerieel besluit tot wijziging …",
                        "date": "2026-05-21T00:00:00.000Z",
                        "publishedAt": "2026-06-01T00:00:00.000Z",
                        "documentType": null,
                        "hasContent": true,
                        "isFederal": false,
                        "numac": null,
                        "versionIds": [
                          1543632
                        ],
                        "country": "BE",
                        "region": "Vlaanderen",
                        "source": "vlaamse-codex",
                        "apiUrl": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søketerm (alias: zoekTerm)",
            "example": "milieu"
          },
          {
            "name": "skip",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            },
            "description": "Antall treff å hoppe over (paginering)",
            "example": "0"
          },
          {
            "name": "take",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "10"
            },
            "description": "Maks antall treff",
            "example": "5"
          }
        ]
      }
    },
    "/api/connectors/vlaamse-codex/themes": {
      "get": {
        "tags": [
          "connector:vlaamse-codex"
        ],
        "operationId": "get_api_connectors_vlaamse_codex_themes",
        "summary": "GET /api/connectors/vlaamse-codex/themes (#4238).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/vlaamse-codex/themes/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorVlaamseCodexThemes",
                  "additionalProperties": false,
                  "description": "Hierarkisk tema-tre (thema) som strukturerer Vlaamse Codex.",
                  "required": [
                    "themes",
                    "count"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "Antall rot-temaer.",
                      "example": 1
                    },
                    "themes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "title": "ConnectorVlaamseCodexTheme",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "label",
                          "order",
                          "children"
                        ],
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 1
                          },
                          "label": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Tema-navn (`Omschrijving`).",
                            "example": "Leefmilieu"
                          },
                          "order": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "description": "Sorteringsrekkefølge (`Volgorde`).",
                            "example": 1
                          },
                          "children": {
                            "type": "array",
                            "description": "Under-temaer (samme form, rekursivt).",
                            "items": {
                              "$ref": "#/components/schemas/ConnectorVlaamseCodexTheme"
                            }
                          }
                        },
                        "example": {
                          "id": 1,
                          "label": "Leefmilieu",
                          "order": 1,
                          "children": [
                            {
                              "id": 11,
                              "label": "Water",
                              "order": 1,
                              "children": []
                            }
                          ]
                        }
                      }
                    }
                  },
                  "example": {
                    "count": 1,
                    "themes": [
                      {
                        "id": 1,
                        "label": "Leefmilieu",
                        "order": 1,
                        "children": [
                          {
                            "id": 11,
                            "label": "Water",
                            "order": 1,
                            "children": []
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/wikidata/company-by-orgnr": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_company_by_orgnr",
        "summary": "GET /api/connectors/wikidata/company-by-orgnr?orgnr=&country= Slår opp selskap på SE Bolagsverket-nr",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/company-by-orgnr/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z-]{4,20}$"
            },
            "description": "Organisasjonsnummer (norsk 9-siffer eller annet register-ID)",
            "example": "923609016"
          }
        ]
      }
    },
    "/api/connectors/wikidata/entity/{qid}": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_entity__qid_",
        "summary": "GET /api/connectors/wikidata/entity/{qid}?lang=no Henter én Wikidata-entitet på QID (f.eks.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/entity/[qid]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorWikidataEntity",
                  "additionalProperties": false,
                  "description": "Normalisert Wikidata-entitet (label, beskrivelse, aliaser, claims) hentet på QID via wbgetentities.",
                  "required": [
                    "id",
                    "aliases",
                    "claims",
                    "url"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^Q[1-9][0-9]*$",
                      "description": "Wikidata-QID for entiteten (tom streng om upstream utelot `id`).",
                      "example": "Q4830453"
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Beste tilgjengelige etikett i foretrukket språk; null når entiteten ikke har etikett på noe språk.",
                      "example": "business"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Kort beskrivelse i samme språk som `label` der mulig; null når den mangler på alle språk.",
                      "example": "organization involved in commercial, industrial, or professional activity"
                    },
                    "lang": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Faktisk språk (BCP-47-kode) på `label`/`description` (#4230). Styres av `?lang` (no/en/sv …); default «no». null når entiteten mangler tekst på alle språk.",
                      "example": "no"
                    },
                    "aliases": {
                      "type": "array",
                      "description": "Alternative navn fra de foretrukne språkene (tom om ingen).",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "company",
                        "firm"
                      ]
                    },
                    "claims": {
                      "type": "object",
                      "description": "Property-ID (P-nummer) → liste av råverdier i string-form. Wikibase- entity-verdier forkortes til QID, tid/mengde/monolingual gjøres om til string. Tom om entiteten ikke har claims.",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "example": {
                        "P31": [
                          "Q8187769"
                        ],
                        "P856": [
                          "https://example.com"
                        ]
                      }
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Lenke til entitetens Wikidata-side.",
                      "example": "https://www.wikidata.org/wiki/Q4830453"
                    }
                  },
                  "example": {
                    "id": "Q4830453",
                    "label": "business",
                    "description": "organization involved in commercial, industrial, or professional activity",
                    "lang": "en",
                    "aliases": [
                      "company",
                      "firm"
                    ],
                    "claims": {
                      "P31": [
                        "Q8187769"
                      ],
                      "P856": [
                        "https://example.com"
                      ]
                    },
                    "url": "https://www.wikidata.org/wiki/Q4830453"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "qid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `qid` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/wikidata/health": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_health",
        "summary": "GET /api/connectors/wikidata/health Default: statisk status (rask).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/wikidata/municipalities": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_municipalities",
        "summary": "GET /api/connectors/wikidata/municipalities?country=&limit= Lister kommuner per land (se/dk/no) med ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/municipalities/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/wikidata/politicians": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_politicians",
        "summary": "GET /api/connectors/wikidata/politicians?country=&limit= Lister medlemmer av nasjonalforsamlingen pe",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/politicians/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/wikidata/search": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_search",
        "summary": "GET /api/connectors/wikidata/search (#2730) Fritekst-søk på Wikidata-entiteter via wbsearchentities ",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorWikidataSearch",
                  "additionalProperties": false,
                  "description": "Entitetssøk i Wikidata. Treff med Q-id, etikett, beskrivelse, aliaser og URL.",
                  "required": [
                    "source",
                    "query",
                    "lang",
                    "count",
                    "hits"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "wikidata"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "example": "Equinor"
                    },
                    "lang": {
                      "type": "string",
                      "example": "no"
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "id",
                          "label",
                          "description",
                          "aliases",
                          "url"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "Q1123669"
                          },
                          "label": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "Equinor"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "example": "norsk energiselskap"
                          },
                          "aliases": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "Statoil"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "example": "https://www.wikidata.org/wiki/Q1123669"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "wikidata",
                    "query": "Equinor",
                    "lang": "no",
                    "count": 1,
                    "hits": [
                      {
                        "id": "Q1123669",
                        "label": "Equinor",
                        "description": "norsk energiselskap",
                        "aliases": [
                          "Statoil"
                        ],
                        "url": "https://www.wikidata.org/wiki/Q1123669"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søketerm — entitetsnavn eller -alias.",
            "example": "Equinor"
          }
        ]
      }
    },
    "/api/connectors/wikidata/sparql": {
      "get": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "get_api_connectors_wikidata_sparql",
        "summary": "GET/POST /api/connectors/wikidata/sparql Fri SPARQL-spørring mot Wikidata Query Service.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/sparql/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SPARQL-spørring",
            "example": "SELECT ?item WHERE { ?item wdt:P31 wd:Q5 } LIMIT 1"
          }
        ]
      },
      "post": {
        "tags": [
          "connector:wikidata"
        ],
        "operationId": "post_api_connectors_wikidata_sparql",
        "summary": "GET/POST /api/connectors/wikidata/sparql Fri SPARQL-spørring mot Wikidata Query Service.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/wikidata/sparql/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SPARQL-spørring",
            "example": "SELECT ?item WHERE { ?item wdt:P31 wd:Q5 } LIMIT 1"
          }
        ]
      }
    },
    "/api/connectors/world-bank/country/{iso2}": {
      "get": {
        "tags": [
          "connector:world-bank"
        ],
        "operationId": "get_api_connectors_world_bank_country__iso2_",
        "summary": "GET /api/connectors/world-bank/country/{iso2} Landprofil (region, inntektsnivå, hovedstad, koordinat",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/world-bank/country/[iso2]/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorWorldBankCountry",
                  "additionalProperties": false,
                  "description": "Landprofil fra Verdensbanken slått opp på ISO2-kode: region, inntektsnivå, hovedstad og koordinater (koordinater som strenger).",
                  "required": [
                    "source",
                    "id",
                    "iso2",
                    "name",
                    "region",
                    "incomeLevel",
                    "capitalCity",
                    "longitude",
                    "latitude"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "world-bank"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "description": "Verdensbankens 3-tegns landkode.",
                      "example": "NOR"
                    },
                    "iso2": {
                      "type": "string",
                      "example": "NO"
                    },
                    "name": {
                      "type": "string",
                      "example": "Norway"
                    },
                    "region": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Europe & Central Asia"
                    },
                    "incomeLevel": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "High income"
                    },
                    "capitalCity": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Oslo"
                    },
                    "longitude": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Lengdegrad som streng (Verdensbankens format).",
                      "example": "10.7387"
                    },
                    "latitude": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "59.9138"
                    }
                  },
                  "example": {
                    "source": "world-bank",
                    "id": "NOR",
                    "iso2": "NO",
                    "name": "Norway",
                    "region": "Europe & Central Asia",
                    "incomeLevel": "High income",
                    "capitalCity": "Oslo",
                    "longitude": "10.7387",
                    "latitude": "59.9138"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "iso2",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Path-parameter `iso2` — se connector-dokumentasjon for format."
          }
        ]
      }
    },
    "/api/connectors/world-bank/health": {
      "get": {
        "tags": [
          "connector:world-bank"
        ],
        "operationId": "get_api_connectors_world_bank_health",
        "summary": "GET /api/connectors/world-bank/health Default: statisk status (rask).",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/world-bank/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/world-bank/indicator": {
      "get": {
        "tags": [
          "connector:world-bank"
        ],
        "operationId": "get_api_connectors_world_bank_indicator",
        "summary": "GET /api/connectors/world-bank/indicator?countries=NO;SE&indicator=NY.GDP.PCAP.CD&date=2015:2025 Gen",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/world-bank/indicator/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorWorldBankIndicator",
                  "additionalProperties": false,
                  "description": "Indikator-tidsserie for ett eller flere land fra World Bank Open Data API v2. Inneholder paginerings-metadata og en flat liste av normaliserte observasjoner.",
                  "required": [
                    "source",
                    "indicatorId",
                    "countries",
                    "page",
                    "pages",
                    "perPage",
                    "total",
                    "hasMore",
                    "nextPage",
                    "lastUpdated",
                    "observations"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "world-bank"
                      ],
                      "description": "Proveniens (#74 explainability).",
                      "example": "world-bank"
                    },
                    "indicatorId": {
                      "type": "string",
                      "description": "Forespurt World Bank indikatorkode (echoes request-param `indicator`).",
                      "example": "NY.GDP.MKTP.CD"
                    },
                    "countries": {
                      "type": "array",
                      "description": "Distinkt liste av land-IDer som faktisk forekommer i `observations` (avledet fra observasjonene, ikke fra forespørselen).",
                      "items": {
                        "type": "string",
                        "description": "World Bank land-ID (ISO2-aktig kode fra upstream `country.id`).",
                        "example": "NO"
                      },
                      "example": [
                        "NO",
                        "SE"
                      ]
                    },
                    "page": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Gjeldende side-nummer (fra upstream meta, default 1).",
                      "example": 1
                    },
                    "pages": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall sider tilgjengelig (fra upstream meta).",
                      "example": 1
                    },
                    "perPage": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Faktisk antall rader per side returnert av upstream. Kan avvike fra forespurt `per_page` dersom upstream klipper; koerces til number.",
                      "example": 100
                    },
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Totalt antall observasjoner på tvers av alle sider (fra upstream meta).",
                      "example": 130
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Avledet — finnes flere sider å hente (`page < pages`).",
                      "example": false
                    },
                    "nextPage": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 1,
                      "description": "Neste side-nummer, eller `null` om vi er på siste side.",
                      "example": null
                    },
                    "lastUpdated": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Datostempel for siste oppdatering hos World Bank (fra upstream meta), eller `null`.",
                      "example": "2024-12-16"
                    },
                    "observations": {
                      "type": "array",
                      "description": "Flat liste av normaliserte observasjoner (tom ved ingen treff).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "description": "Én observasjon (ett land × én periode).",
                        "required": [
                          "country",
                          "countryId",
                          "countryIso3",
                          "indicator",
                          "indicatorId",
                          "date",
                          "value",
                          "unit",
                          "obsStatus"
                        ],
                        "properties": {
                          "country": {
                            "type": "string",
                            "description": "Lands-navn fra upstream (tom streng om mangler).",
                            "example": "Norway"
                          },
                          "countryId": {
                            "type": "string",
                            "description": "Lands-ID fra upstream `country.id` (tom streng om mangler).",
                            "example": "NO"
                          },
                          "countryIso3": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "ISO3-landkode hvis upstream eksponerer den, ellers `null`.",
                            "example": "NOR"
                          },
                          "indicator": {
                            "type": "string",
                            "description": "Indikator-navn fra upstream (tom streng om mangler).",
                            "example": "GDP (current US$)"
                          },
                          "indicatorId": {
                            "type": "string",
                            "description": "Indikator-ID fra upstream, eller den forespurte koden som fallback.",
                            "example": "NY.GDP.MKTP.CD"
                          },
                          "date": {
                            "type": "string",
                            "description": "Observasjonsperiode (vanligvis år som streng).",
                            "example": "2023"
                          },
                          "value": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Observert verdi, eller `null` når upstream mangler data for perioden.",
                            "example": 485510152864.85
                          },
                          "unit": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Enhet hvis upstream oppgir den, ellers `null`.",
                            "example": null
                          },
                          "obsStatus": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Observasjonsstatus-flagg fra upstream (`obs_status`), ellers `null`.",
                            "example": null
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "world-bank",
                    "indicatorId": "NY.GDP.MKTP.CD",
                    "countries": [
                      "NO",
                      "SE"
                    ],
                    "page": 1,
                    "pages": 1,
                    "perPage": 100,
                    "total": 130,
                    "hasMore": false,
                    "nextPage": null,
                    "lastUpdated": "2024-12-16",
                    "observations": [
                      {
                        "country": "Norway",
                        "countryId": "NO",
                        "countryIso3": "NOR",
                        "indicator": "GDP (current US$)",
                        "indicatorId": "NY.GDP.MKTP.CD",
                        "date": "2023",
                        "value": 485510152864.85,
                        "unit": null,
                        "obsStatus": null
                      },
                      {
                        "country": "Sweden",
                        "countryId": "SE",
                        "countryIso3": "SWE",
                        "indicator": "GDP (current US$)",
                        "indicatorId": "NY.GDP.MKTP.CD",
                        "date": "2023",
                        "value": 593267593818.93,
                        "unit": null,
                        "obsStatus": null
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "countries",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^([A-Za-z]{2,3}(;[A-Za-z]{2,3})*|all)$"
            },
            "description": "Semikolon-separert liste ISO-2/ISO-3 landkoder (f.eks. NO;SE) eller 'all'",
            "example": "NO;SE"
          },
          {
            "name": "indicator",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._-]{2,40}$"
            },
            "description": "World Bank indikatorkode",
            "example": "NY.GDP.MKTP.CD"
          }
        ]
      }
    },
    "/api/connectors/world-bank/search-indicator": {
      "get": {
        "tags": [
          "connector:world-bank"
        ],
        "operationId": "get_api_connectors_world_bank_search_indicator",
        "summary": "GET /api/connectors/world-bank/search-indicator?q=gdp&limit=25 Fritekstsøk i World Banks indikator-m",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/world-bank/search-indicator/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Søkestreng (minst 2 tegn)",
            "example": "gdp"
          }
        ]
      }
    },
    "/api/connectors/ytj/companies": {
      "get": {
        "tags": [
          "connector:ytj"
        ],
        "operationId": "get_api_connectors_ytj_companies",
        "summary": "GET /api/connectors/ytj/companies?businessId=NNNNNNN-N Slå opp ett finsk selskap på Y-tunnus mot PRH",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ytj/companies/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorYtjCompany",
                  "additionalProperties": false,
                  "description": "Ett finsk selskap slått opp på business-id (PRH/YTJ v3). PRH-strukturen bevares (navn/selskapsformer/hovednæring/registeroppføringer); mange kodefelt er `string | number`.",
                  "required": [
                    "company",
                    "source"
                  ],
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "ytj"
                      ]
                    },
                    "company": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "businessId",
                        "names",
                        "companyForms",
                        "registeredEntries"
                      ],
                      "properties": {
                        "businessId": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "value"
                          ],
                          "properties": {
                            "value": {
                              "type": "string",
                              "example": "0112038-9"
                            },
                            "registrationDate": {
                              "type": "string",
                              "example": "1896-05-04"
                            },
                            "endDate": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "source": {
                              "type": [
                                "string",
                                "number"
                              ]
                            }
                          }
                        },
                        "names": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "name"
                            ],
                            "properties": {
                              "name": {
                                "type": "string",
                                "example": "Nokia Oyj"
                              },
                              "type": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "registrationDate": {
                                "type": "string"
                              },
                              "endDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "source": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "version": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              }
                            }
                          }
                        },
                        "companyForms": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "type": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "descriptions": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "properties": {
                                    "languageCode": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "registrationDate": {
                                "type": "string"
                              },
                              "endDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "source": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              }
                            }
                          }
                        },
                        "mainBusinessLine": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "type": {
                              "type": [
                                "string",
                                "number"
                              ]
                            },
                            "descriptions": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                  "languageCode": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  }
                                }
                              }
                            },
                            "registrationDate": {
                              "type": "string"
                            }
                          }
                        },
                        "registeredEntries": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "type": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "descriptions": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "properties": {
                                    "languageCode": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "status": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "registrationDate": {
                                "type": "string"
                              },
                              "endDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "authority": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "register": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              }
                            }
                          }
                        },
                        "lastModified": {
                          "type": "string",
                          "example": "2025-05-01"
                        }
                      }
                    }
                  },
                  "example": {
                    "source": "ytj",
                    "company": {
                      "businessId": {
                        "value": "0112038-9",
                        "registrationDate": "1896-05-04",
                        "endDate": null
                      },
                      "names": [
                        {
                          "name": "Nokia Oyj",
                          "type": "1"
                        }
                      ],
                      "companyForms": [
                        {
                          "type": "OYJ",
                          "descriptions": [
                            {
                              "languageCode": "fi",
                              "description": "Julkinen osakeyhtiö"
                            }
                          ],
                          "registrationDate": "1994-01-01"
                        }
                      ],
                      "mainBusinessLine": {
                        "type": "2630",
                        "descriptions": [
                          {
                            "languageCode": "en",
                            "description": "Manufacture of communication equipment"
                          }
                        ],
                        "registrationDate": "2007-01-01"
                      },
                      "registeredEntries": [
                        {
                          "type": "1",
                          "status": "2",
                          "register": "1",
                          "authority": "2",
                          "registrationDate": "1896-05-04"
                        }
                      ],
                      "lastModified": "2025-05-01"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "businessId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{7}-\\d$"
            },
            "description": "Finsk Y-tunnus (business ID), format NNNNNNN-N",
            "example": "0112038-9"
          }
        ]
      }
    },
    "/api/connectors/ytj/health": {
      "get": {
        "tags": [
          "connector:ytj"
        ],
        "operationId": "get_api_connectors_ytj_health",
        "summary": "GET /api/connectors/ytj/health",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ytj/health/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {}
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/connectors/ytj/search": {
      "get": {
        "tags": [
          "connector:ytj"
        ],
        "operationId": "get_api_connectors_ytj_search",
        "summary": "GET /api/connectors/ytj/search?name=...&location=...&page=N Paginert søk i PRH/YTJ Open Data API v3.",
        "x-ketl-auto-generated": true,
        "x-ketl-route-file": "src/app/api/connectors/ytj/search/route.ts",
        "responses": {
          "200": {
            "description": "OK — connector-spesifikt JSON-respons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ConnectorYtjSearch",
                  "additionalProperties": false,
                  "description": "Søketreff i det finske foretaksregisteret (PRH/YTJ åpne data). Selskaper med business-id, navn, selskapsformer, hovednæring og registeroppføringer. Struktur følger PRH sitt skjema (validert, men ikke re-mappet til KETL-feltnavn).",
                  "required": [
                    "companies",
                    "source"
                  ],
                  "properties": {
                    "totalResults": {
                      "type": "integer",
                      "minimum": 0,
                      "example": 1
                    },
                    "companies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "businessId",
                          "names",
                          "companyForms",
                          "registeredEntries"
                        ],
                        "properties": {
                          "businessId": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "value"
                            ],
                            "properties": {
                              "value": {
                                "type": "string",
                                "example": "0112038-9"
                              },
                              "registrationDate": {
                                "type": "string",
                                "example": "1896-05-04"
                              },
                              "endDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "source": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              }
                            }
                          },
                          "names": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "required": [
                                "name"
                              ],
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "example": "Nokia Oyj"
                                },
                                "type": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                },
                                "registrationDate": {
                                  "type": "string"
                                },
                                "endDate": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "source": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                },
                                "version": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                }
                              }
                            }
                          },
                          "companyForms": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "type": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                },
                                "descriptions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                      "languageCode": {
                                        "type": "string",
                                        "example": "fi"
                                      },
                                      "description": {
                                        "type": "string",
                                        "example": "Julkinen osakeyhtiö"
                                      }
                                    }
                                  }
                                },
                                "registrationDate": {
                                  "type": "string"
                                },
                                "endDate": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "source": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                }
                              }
                            }
                          },
                          "mainBusinessLine": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "type": {
                                "type": [
                                  "string",
                                  "number"
                                ]
                              },
                              "descriptions": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "properties": {
                                    "languageCode": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "registrationDate": {
                                "type": "string"
                              }
                            }
                          },
                          "registeredEntries": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "type": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                },
                                "descriptions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                      "languageCode": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                },
                                "status": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                },
                                "registrationDate": {
                                  "type": "string"
                                },
                                "endDate": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "authority": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                },
                                "register": {
                                  "type": [
                                    "string",
                                    "number"
                                  ]
                                }
                              }
                            }
                          },
                          "lastModified": {
                            "type": "string",
                            "example": "2025-05-01"
                          }
                        }
                      }
                    },
                    "previousPage": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "nextPage": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "ytj"
                      ]
                    }
                  },
                  "example": {
                    "totalResults": 1,
                    "companies": [
                      {
                        "businessId": {
                          "value": "0112038-9",
                          "registrationDate": "1896-05-04",
                          "endDate": null
                        },
                        "names": [
                          {
                            "name": "Nokia Oyj",
                            "type": "1"
                          }
                        ],
                        "companyForms": [
                          {
                            "type": "OYJ",
                            "descriptions": [
                              {
                                "languageCode": "fi",
                                "description": "Julkinen osakeyhtiö"
                              }
                            ],
                            "registrationDate": "1994-01-01"
                          }
                        ],
                        "mainBusinessLine": {
                          "type": "2630",
                          "descriptions": [
                            {
                              "languageCode": "en",
                              "description": "Manufacture of communication equipment"
                            }
                          ],
                          "registrationDate": "2007-01-01"
                        },
                        "registeredEntries": [
                          {
                            "type": "1",
                            "status": "2",
                            "register": "1",
                            "authority": "2",
                            "registrationDate": "1896-05-04"
                          }
                        ],
                        "lastModified": "2025-05-01"
                      }
                    ],
                    "previousPage": null,
                    "nextPage": null,
                    "source": "ytj"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Klientfeil (validation/auth/rate-limit).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          },
          "5XX": {
            "description": "Upstream- eller serverfeil.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "title": "Problem",
                  "required": [
                    "type",
                    "title",
                    "status"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "format": "uri-reference",
                      "default": "about:blank",
                      "description": "Stabil identifikator for feiltypen.",
                      "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                    },
                    "title": {
                      "type": "string",
                      "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                    },
                    "status": {
                      "type": "integer",
                      "minimum": 100,
                      "maximum": 599
                    },
                    "detail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Konkret beskrivelse av denne instansen."
                    },
                    "instance": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri-reference",
                      "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                    },
                    "ketlRequestId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                    },
                    "ketlRetryAfterMs": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                    }
                  },
                  "example": {
                    "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                    "title": "Rate limit exceeded",
                    "status": 429,
                    "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                    "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                    "ketlRetryAfterMs": 60000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "companyForm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Selskapsform",
            "example": "OY"
          },
          {
            "name": "location",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Sted/kommune",
            "example": "Helsinki"
          },
          {
            "name": "mainBusinessLine",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Hovednæringskode (TOL/NACE)",
            "example": "62010"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Selskapsnavn (minst ett filter må oppgis)",
            "example": "Nokia"
          },
          {
            "name": "registrationDateEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Registrert til (YYYY-MM-DD)",
            "example": "2024-12-31"
          },
          {
            "name": "registrationDateStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Registrert fra (YYYY-MM-DD)",
            "example": "2020-01-01"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Company": {
        "type": "object",
        "title": "Company",
        "description": "Normalisert selskaps-entitet. For Tier 1 dekker den norske AS/ASA fra Brreg.\nTier 2 utvider med svenske/danske/finske selskaper via lands-spesifikke\n`nationalIdType`-verdier (#410).\n",
        "required": [
          "orgnr",
          "nationalIdType",
          "country",
          "navn",
          "selskapsform",
          "status",
          "kontakt",
          "konkurs",
          "underAvvikling",
          "slettetIso",
          "sistHentetIso",
          "source"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "example": "974760673"
          },
          "nationalIdType": {
            "type": "string",
            "enum": [
              "ORGNR",
              "CVR",
              "ORGNR_SE",
              "YTJ",
              "KENNITALA"
            ],
            "description": "Hvilket nasjonalt register `orgnr` kommer fra. Disambiguerer ID-typen ved\nnordisk utvidelse (#410): `ORGNR` (NO Brreg), `CVR` (DK Erhvervsstyrelsen),\n`ORGNR_SE` (SE Bolagsverket), `YTJ` (FI PRH), `KENNITALA` (IS Skrá).\n",
            "example": "ORGNR"
          },
          "country": {
            "type": "string",
            "enum": [
              "NO",
              "SE",
              "DK",
              "FI",
              "IS"
            ],
            "description": "ISO 3166-1 alpha-2-landkode for registeret. Del av entitets-identiteten.",
            "example": "NO"
          },
          "navn": {
            "type": "string",
            "minLength": 1,
            "description": "Registrert selskapsnavn fra Brreg.",
            "example": "Statens vegvesen"
          },
          "mvaNavn": {
            "type": [
              "string",
              "null"
            ],
            "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet."
          },
          "selskapsform": {
            "type": "string",
            "enum": [
              "AS",
              "ASA",
              "ENK",
              "ANS",
              "SA",
              "IKS",
              "KF",
              "STI",
              "FLI",
              "ANNET"
            ],
            "description": "Selskapsform per Brreg-kategorisering."
          },
          "antallAnsatte": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Antall ansatte fra siste Brreg-snapshot."
          },
          "stiftetIso": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
            "example": "1864-07-01"
          },
          "forretningsadresse": {
            "oneOf": [
              {
                "type": "object",
                "title": "CompanyAddress",
                "required": [
                  "adresse",
                  "postnummer",
                  "poststed",
                  "kommunenummer",
                  "land"
                ],
                "properties": {
                  "adresse": {
                    "type": "array",
                    "description": "Adresselinjer (gateadresse, etasje, etc.).",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 0,
                    "maxItems": 3
                  },
                  "postnummer": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk postnummer (4 siffer)."
                  },
                  "poststed": {
                    "type": "string",
                    "minLength": 1
                  },
                  "kommunenummer": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                  },
                  "land": {
                    "type": "string",
                    "enum": [
                      "NO"
                    ],
                    "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                  }
                },
                "example": {
                  "adresse": [
                    "Akersveien 26"
                  ],
                  "postnummer": "0177",
                  "poststed": "Oslo",
                  "kommunenummer": "0301",
                  "land": "NO"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Registrert forretningsadresse, eller `null` når registeret ikke fører en\nkomplett adresse (slettede/fusjonerte enheter, enkelte\nutenlandsregistrerte). Vi lyver ikke med et tomt adresse-skall (#4255).\n"
          },
          "postadresse": {
            "oneOf": [
              {
                "type": "object",
                "title": "CompanyAddress",
                "required": [
                  "adresse",
                  "postnummer",
                  "poststed",
                  "kommunenummer",
                  "land"
                ],
                "properties": {
                  "adresse": {
                    "type": "array",
                    "description": "Adresselinjer (gateadresse, etasje, etc.).",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 0,
                    "maxItems": 3
                  },
                  "postnummer": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk postnummer (4 siffer)."
                  },
                  "poststed": {
                    "type": "string",
                    "minLength": 1
                  },
                  "kommunenummer": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                  },
                  "land": {
                    "type": "string",
                    "enum": [
                      "NO"
                    ],
                    "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                  }
                },
                "example": {
                  "adresse": [
                    "Akersveien 26"
                  ],
                  "postnummer": "0177",
                  "poststed": "Oslo",
                  "kommunenummer": "0301",
                  "land": "NO"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Postadresse hvis forskjellig fra forretningsadresse."
          },
          "kontakt": {
            "type": "object",
            "description": "Kontaktinformasjon (alle felter kan være null).",
            "required": [
              "epost",
              "telefon",
              "hjemmeside"
            ],
            "properties": {
              "epost": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "email"
              },
              "telefon": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "hjemmeside": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri"
              }
            }
          },
          "naeringskode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Primært NACE-nummer (f.eks. `84.130`).",
            "example": "84.130"
          },
          "status": {
            "type": "string",
            "enum": [
              "aktiv",
              "konkurs",
              "under_avvikling",
              "slettet"
            ],
            "description": "**Avledet status** — autoritativt KYB-/screening-signal. Presedens\n(høyest først): `slettet` (fjernet/fusjonert fra registeret) → `konkurs`\n→ `under_avvikling` → `aktiv`. En slettet enhet er terminal uansett\ngjenværende risiko-flagg. `under_avvikling` dekker også tvangsavvikling i\nden kanoniske modellen. De rå indikatorene `konkurs`/`underAvvikling`/\n`slettetIso` beholdes ved siden av (#4254).\n",
            "example": "aktiv"
          },
          "konkurs": {
            "type": "boolean",
            "description": "**Risiko-flagg.** `true` hvis selskapet er registrert konkurs i Brreg.\nDirekte screening-/KYB-relevant — agenter som vurderer motparter bør lese\ndette feltet.\n",
            "example": false
          },
          "underAvvikling": {
            "type": "boolean",
            "description": "**Risiko-flagg.** `true` hvis selskapet er under avvikling. Som `konkurs`\net konkret bool-signal for due diligence.\n",
            "example": false
          },
          "slettetIso": {
            "type": [
              "string",
              "null"
            ],
            "description": "**Risiko-flagg.** ISO-8601 slettedato hvis enheten er slettet/fusjonert i\nregisteret, ellers `null`. Driver `status:\"slettet\"`. En slettet motpart\nsom presenteres som aktiv er falsk trygghet i KYB-sjekken (#4254).\n",
            "example": null
          },
          "sistHentetIso": {
            "type": "string",
            "minLength": 20,
            "description": "Hentet-tidspunkt fra Brreg, ISO-8601.",
            "example": "2026-05-04T08:30:00Z"
          },
          "source": {
            "type": "string",
            "description": "Proveniens — hvilken kilde som leverte denne snapshoten (jf.\nexplainability-moat #74). For Tier 1: `brreg:enhetsregisteret`.\n",
            "example": "brreg:enhetsregisteret"
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Versjon av kilde-API observert da payloaden ble hentet. Brukes for\ndrift-deteksjon; `null` når kilden ikke eksponerer en versjonsmarkør.\n",
            "example": null
          }
        },
        "example": {
          "orgnr": "974760673",
          "nationalIdType": "ORGNR",
          "country": "NO",
          "navn": "Statens vegvesen",
          "mvaNavn": null,
          "selskapsform": "ANNET",
          "antallAnsatte": 7500,
          "stiftetIso": "1864-07-01",
          "forretningsadresse": {
            "adresse": [
              "Postboks 1010"
            ],
            "postnummer": "2605",
            "poststed": "Lillehammer",
            "kommunenummer": "3403",
            "land": "NO"
          },
          "postadresse": null,
          "kontakt": {
            "epost": "firmapost@vegvesen.no",
            "telefon": "+47 22 07 30 00",
            "hjemmeside": "https://www.vegvesen.no"
          },
          "naeringskode": "84.130",
          "status": "aktiv",
          "konkurs": false,
          "underAvvikling": false,
          "slettetIso": null,
          "sistHentetIso": "2026-05-04T08:30:00Z",
          "source": "brreg:enhetsregisteret",
          "apiVersion": null
        }
      },
      "CompanyEnglish": {
        "type": "object",
        "title": "CompanyEnglish",
        "description": "Normalisert selskaps-entitet med engelsk felt-navngivning. Felt-for-felt\nprojeksjon av `Company` (Norwegian) — ingen data går tapt.\n",
        "required": [
          "orgnr",
          "nationalIdType",
          "country",
          "legalName",
          "organizationForm",
          "status",
          "contact",
          "bankruptcy",
          "underLiquidation",
          "deletedDate",
          "retrievedAt",
          "source"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "example": "974760673"
          },
          "nationalIdType": {
            "type": "string",
            "enum": [
              "ORGNR",
              "CVR",
              "ORGNR_SE",
              "YTJ",
              "KENNITALA"
            ],
            "description": "Hvilket nasjonalt register `orgnr` kommer fra.",
            "example": "ORGNR"
          },
          "country": {
            "type": "string",
            "enum": [
              "NO",
              "SE",
              "DK",
              "FI",
              "IS"
            ],
            "description": "ISO 3166-1 alpha-2-landkode for registeret.",
            "example": "NO"
          },
          "legalName": {
            "type": "string",
            "minLength": 1,
            "description": "Registrert selskapsnavn (← `navn`).",
            "example": "Statens vegvesen"
          },
          "vatName": {
            "type": [
              "string",
              "null"
            ],
            "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet (← `mvaNavn`)."
          },
          "organizationForm": {
            "type": "string",
            "enum": [
              "AS",
              "ASA",
              "ENK",
              "ANS",
              "SA",
              "IKS",
              "KF",
              "STI",
              "FLI",
              "ANNET"
            ],
            "description": "Selskapsform per Brreg-kategorisering (← `selskapsform`)."
          },
          "employeeCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Antall ansatte fra siste snapshot (← `antallAnsatte`)."
          },
          "incorporationDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`) (← `stiftetIso`).",
            "example": "1864-07-01"
          },
          "registeredAddress": {
            "oneOf": [
              {
                "type": "object",
                "title": "CompanyAddressEnglish",
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "municipalityCode",
                  "country"
                ],
                "properties": {
                  "street": {
                    "type": "string",
                    "description": "Gateadresse-linjer slått sammen til én streng (\", \"-separert)."
                  },
                  "postalCode": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk postnummer (4 siffer)."
                  },
                  "city": {
                    "type": "string",
                    "minLength": 1
                  },
                  "municipalityCode": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "NO",
                      "SE",
                      "DK",
                      "FI",
                      "IS"
                    ],
                    "description": "ISO 3166-1 alpha-2-landkode."
                  }
                },
                "example": {
                  "street": "Akersveien 26",
                  "postalCode": "0177",
                  "city": "Oslo",
                  "municipalityCode": "0301",
                  "country": "NO"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Registrert forretningsadresse, eller `null` (← `forretningsadresse`)."
          },
          "postalAddress": {
            "oneOf": [
              {
                "type": "object",
                "title": "CompanyAddressEnglish",
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "municipalityCode",
                  "country"
                ],
                "properties": {
                  "street": {
                    "type": "string",
                    "description": "Gateadresse-linjer slått sammen til én streng (\", \"-separert)."
                  },
                  "postalCode": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk postnummer (4 siffer)."
                  },
                  "city": {
                    "type": "string",
                    "minLength": 1
                  },
                  "municipalityCode": {
                    "type": "string",
                    "pattern": "^\\d{4}$",
                    "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "NO",
                      "SE",
                      "DK",
                      "FI",
                      "IS"
                    ],
                    "description": "ISO 3166-1 alpha-2-landkode."
                  }
                },
                "example": {
                  "street": "Akersveien 26",
                  "postalCode": "0177",
                  "city": "Oslo",
                  "municipalityCode": "0301",
                  "country": "NO"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Postadresse hvis forskjellig (← `postadresse`)."
          },
          "contact": {
            "type": "object",
            "description": "Kontaktinformasjon (alle felter kan være null) (← `kontakt`).",
            "required": [
              "email",
              "phone",
              "website"
            ],
            "properties": {
              "email": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "email"
              },
              "phone": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "website": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri"
              }
            }
          },
          "industryCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Primært NACE-nummer (← `naeringskode`).",
            "example": "84.130"
          },
          "status": {
            "type": "string",
            "enum": [
              "aktiv",
              "konkurs",
              "under_avvikling",
              "slettet"
            ],
            "description": "Avledet status — autoritativt KYB-/screening-signal. Kanoniske koder,\nuoversatt (delt med den norske formen og den aggregerte flaten).\n",
            "example": "aktiv"
          },
          "bankruptcy": {
            "type": "boolean",
            "description": "Risiko-flagg — `true` hvis registrert konkurs (← `konkurs`).",
            "example": false
          },
          "underLiquidation": {
            "type": "boolean",
            "description": "Risiko-flagg — `true` hvis under avvikling (← `underAvvikling`).",
            "example": false
          },
          "deletedDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-8601 slettedato hvis slettet/fusjonert, ellers `null` (← `slettetIso`).",
            "example": null
          },
          "retrievedAt": {
            "type": "string",
            "minLength": 20,
            "description": "Hentet-tidspunkt fra kilden, ISO-8601 (← `sistHentetIso`).",
            "example": "2026-05-04T08:30:00Z"
          },
          "source": {
            "type": "string",
            "description": "Proveniens — hvilken kilde leverte snapshoten. Tier 1: `brreg:enhetsregisteret`.",
            "example": "brreg:enhetsregisteret"
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Versjon av kilde-API observert, eller `null`.",
            "example": null
          },
          "mva": {
            "type": [
              "object",
              "null"
            ],
            "description": "MVA-beriking (#1954) — registrert i MVA-manntallet.",
            "required": [
              "registered",
              "snapshotDate",
              "source"
            ],
            "properties": {
              "registered": {
                "type": "boolean"
              },
              "snapshotDate": {
                "type": "string"
              },
              "source": {
                "type": "string"
              }
            }
          },
          "lei": {
            "type": [
              "string",
              "null"
            ],
            "description": "Legal Entity Identifier (GLEIF) hvis funnet via orgnr (#3102)."
          },
          "leiStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "LEI-registreringsstatus (f.eks. `ISSUED`, `LAPSED`)."
          },
          "_related": {
            "type": "object",
            "description": "Kryss-lenker til søsken-flatene (agent-first discovery,",
            "required": [
              "aggregatedProfile",
              "alternateLanguage"
            ],
            "properties": {
              "aggregatedProfile": {
                "type": "string",
                "description": "Aggregert 360°-profil (`/api/v1/company/{orgnr}`).",
                "example": "/api/v1/company/974760673"
              },
              "alternateLanguage": {
                "type": "string",
                "description": "Samme entitet i norsk feltspråk (`?lang=no`).",
                "example": "/api/v1/companies/974760673?lang=no"
              }
            }
          }
        },
        "example": {
          "orgnr": "974760673",
          "nationalIdType": "ORGNR",
          "country": "NO",
          "legalName": "Statens vegvesen",
          "vatName": null,
          "organizationForm": "ANNET",
          "employeeCount": 7500,
          "incorporationDate": "1864-07-01",
          "registeredAddress": {
            "street": "Postboks 1010",
            "postalCode": "2605",
            "city": "Lillehammer",
            "municipalityCode": "3403",
            "country": "NO"
          },
          "postalAddress": null,
          "contact": {
            "email": "firmapost@vegvesen.no",
            "phone": "+47 22 07 30 00",
            "website": "https://www.vegvesen.no"
          },
          "industryCode": "84.130",
          "status": "aktiv",
          "bankruptcy": false,
          "underLiquidation": false,
          "deletedDate": null,
          "retrievedAt": "2026-05-04T08:30:00Z",
          "source": "brreg:enhetsregisteret",
          "apiVersion": null,
          "mva": null,
          "lei": null,
          "leiStatus": null,
          "_related": {
            "aggregatedProfile": "/api/v1/company/974760673",
            "alternateLanguage": "/api/v1/companies/974760673?lang=no"
          }
        }
      },
      "CompanyAddress": {
        "type": "object",
        "title": "CompanyAddress",
        "required": [
          "adresse",
          "postnummer",
          "poststed",
          "kommunenummer",
          "land"
        ],
        "properties": {
          "adresse": {
            "type": "array",
            "description": "Adresselinjer (gateadresse, etasje, etc.).",
            "items": {
              "type": "string"
            },
            "minItems": 0,
            "maxItems": 3
          },
          "postnummer": {
            "type": "string",
            "pattern": "^\\d{4}$",
            "description": "Norsk postnummer (4 siffer)."
          },
          "poststed": {
            "type": "string",
            "minLength": 1
          },
          "kommunenummer": {
            "type": "string",
            "pattern": "^\\d{4}$",
            "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
          },
          "land": {
            "type": "string",
            "enum": [
              "NO"
            ],
            "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
          }
        },
        "example": {
          "adresse": [
            "Akersveien 26"
          ],
          "postnummer": "0177",
          "poststed": "Oslo",
          "kommunenummer": "0301",
          "land": "NO"
        }
      },
      "CompanyAddressEnglish": {
        "type": "object",
        "title": "CompanyAddressEnglish",
        "required": [
          "street",
          "postalCode",
          "city",
          "municipalityCode",
          "country"
        ],
        "properties": {
          "street": {
            "type": "string",
            "description": "Gateadresse-linjer slått sammen til én streng (\", \"-separert)."
          },
          "postalCode": {
            "type": "string",
            "pattern": "^\\d{4}$",
            "description": "Norsk postnummer (4 siffer)."
          },
          "city": {
            "type": "string",
            "minLength": 1
          },
          "municipalityCode": {
            "type": "string",
            "pattern": "^\\d{4}$",
            "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
          },
          "country": {
            "type": "string",
            "enum": [
              "NO",
              "SE",
              "DK",
              "FI",
              "IS"
            ],
            "description": "ISO 3166-1 alpha-2-landkode."
          }
        },
        "example": {
          "street": "Akersveien 26",
          "postalCode": "0177",
          "city": "Oslo",
          "municipalityCode": "0301",
          "country": "NO"
        }
      },
      "Snapshot": {
        "type": "object",
        "title": "Snapshot",
        "required": [
          "snapshotId",
          "entityType",
          "entityId",
          "fetchedIso",
          "source",
          "payload"
        ],
        "properties": {
          "snapshotId": {
            "type": "string",
            "description": "ULID, tidssortert. Stabil og deterministisk.",
            "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$",
            "example": "01HZN3R5QKV8MQX7K9C2W6J5RT"
          },
          "entityType": {
            "type": "string",
            "description": "Domene-entitet snapshoten beskriver.",
            "enum": [
              "company",
              "person",
              "address",
              "regulation",
              "case",
              "statistics"
            ]
          },
          "entityId": {
            "type": "string",
            "description": "Domene-id (orgnr for company, matrikkel for address, m.fl.)."
          },
          "fetchedIso": {
            "type": "string",
            "minLength": 20,
            "description": "Når connectoren hentet payload-en. ISO-8601."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Versjon av kilde-API observert ved fetch (drift-deteksjon)."
          },
          "payload": {
            "type": "object",
            "description": "Kanonisk JSON-representasjon av kilde-responsen, post-normalisering.\nBegrenset til ~1 MB; chunkes ved overskridelse.\n",
            "additionalProperties": true
          },
          "payloadHash": {
            "type": "string",
            "description": "SHA-256 av canonicalized payload. Brukes for diff-deteksjon.",
            "pattern": "^[0-9a-f]{64}$"
          },
          "changeReason": {
            "type": "string",
            "enum": [
              "initial",
              "value-change",
              "periodic"
            ],
            "description": "Hvorfor snapshoten ble skrevet."
          }
        }
      },
      "Event": {
        "type": "object",
        "title": "Event",
        "required": [
          "eventId",
          "entityType",
          "entityId",
          "eventType",
          "detectedIso",
          "source"
        ],
        "properties": {
          "eventId": {
            "type": "string",
            "description": "ULID, tidssortert. Stabil mellom replays.",
            "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$"
          },
          "entityType": {
            "type": "string",
            "enum": [
              "company",
              "person",
              "address",
              "regulation",
              "case"
            ]
          },
          "entityId": {
            "type": "string"
          },
          "eventType": {
            "type": "string",
            "description": "Domene-spesifikk hendelsestype. Eksempler: `brreg:name_changed`,\n`brreg:role_added`, `finanstilsynet:licence_revoked`, `kartverket:owner_changed`.\n",
            "pattern": "^[a-z][a-z0-9_-]*:[a-z][a-z0-9_-]*$",
            "example": "brreg:name_changed"
          },
          "detectedIso": {
            "type": "string",
            "minLength": 20
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "before": {
            "type": [
              "object",
              "null"
            ],
            "description": "Felt-subset fra forrige snapshot.",
            "additionalProperties": true
          },
          "after": {
            "type": [
              "object",
              "null"
            ],
            "description": "Felt-subset fra nåværende snapshot.",
            "additionalProperties": true
          },
          "snapshotIdBefore": {
            "type": [
              "string",
              "null"
            ]
          },
          "snapshotIdAfter": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Source": {
        "type": "object",
        "title": "Source",
        "required": [
          "key",
          "name",
          "status",
          "country"
        ],
        "properties": {
          "key": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "name": {
            "type": "string",
            "description": "Menneskelig navn på kilden.",
            "example": "Brønnøysundregistrene Enhetsregisteret"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 500
          },
          "status": {
            "type": "string",
            "enum": [
              "connected",
              "planned",
              "scraping",
              "deprecated"
            ],
            "description": "`connected`  = produserer ekte data via /api/data eller /api/v1\n`planned`    = listet i konfig, men ikke koblet til\n`scraping`   = ingen åpent API; data kommer fra scraper-flåten (#214)\n`deprecated` = under avvikling\n"
          },
          "country": {
            "type": "string",
            "enum": [
              "NO",
              "SE",
              "DK",
              "FI",
              "IS",
              "EU"
            ],
            "description": "Hvilket land/region kilden dekker."
          },
          "segments": {
            "type": "array",
            "description": "ICP-segmenter denne kilden er primært relevant for (#98).",
            "items": {
              "type": "string",
              "enum": [
                "revisor",
                "konsulent",
                "journalist",
                "kommune",
                "compliance",
                "aktuar",
                "eiendom",
                "utvikler",
                "academia",
                "pe-vc",
                "csrd",
                "ai-act",
                "eksportor",
                "casp",
                "bygg-anlegg"
              ]
            }
          },
          "docsUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Lenke til kildens egen API-dokumentasjon (data.brreg.no, ws.geonorge.no, ...)."
          },
          "mcpSlugs": {
            "type": "array",
            "description": "MCP-server-slug(er) (`/api/v1/_meta/mcp`) som betjener denne kilden (#3915).\nTom liste om kilden ikke har en publisert MCP-server. Relasjonen er 1:mange\n— én kilde kan betjenes av flere servere (f.eks. `brreg` av både `brreg` og\n`selskap`). Symmetrisk backlink til MCP-katalogens `servers[].sourceKey`\nslik at en agent kan krysse kilde → MCP deterministisk uten å gjette\nslug-mapping.\n",
            "items": {
              "type": "string"
            },
            "example": [
              "brreg",
              "selskap"
            ]
          }
        },
        "example": {
          "key": "brreg",
          "name": "Brønnøysundregistrene Enhetsregisteret",
          "description": "Norsk selskapsregister med ~1M aktive juridiske enheter.",
          "status": "connected",
          "country": "NO",
          "segments": [
            "revisor",
            "compliance",
            "journalist"
          ],
          "docsUrl": "https://data.brreg.no/enhetsregisteret/api/dokumentasjon/no/index.html",
          "mcpSlugs": [
            "brreg",
            "selskap"
          ]
        }
      },
      "SourceKey": {
        "type": "string",
        "title": "SourceKey",
        "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
        "enum": [
          "brreg",
          "ssb",
          "norges-bank",
          "enhetsregister",
          "proff",
          "bygg-anlegg",
          "eksportor",
          "kartverket",
          "sodir",
          "ais",
          "artskart",
          "avinor",
          "barentswatch",
          "elhub",
          "fhi",
          "finanstilsynet",
          "finansinspektionen-se",
          "finanstilsynet-dk",
          "fisheries",
          "fri-nettleie",
          "frost",
          "geonorge",
          "hoyesterett",
          "konkurs",
          "kommunedatabasen",
          "kostra",
          "lakselus",
          "lovtidend",
          "luftkvalitet",
          "lysingsblad",
          "mattilsynet-smilefjes",
          "met",
          "nav",
          "nb-dhlab",
          "norske-utslipp",
          "nve",
          "nvdb",
          "oslobors",
          "patentstyret",
          "politiloggen",
          "regjeringen",
          "rss-news",
          "sdir",
          "stortinget",
          "stromprise",
          "udir",
          "connectors",
          "data-quality",
          "audit",
          "companies",
          "persons",
          "kg",
          "sync",
          "config",
          "sync-state",
          "storage",
          "discovery",
          "lineage",
          "backup",
          "metrics",
          "dashboard",
          "brreg-endringer",
          "nav-grunnbelop"
        ]
      },
      "PaginatedCompanies": {
        "type": "object",
        "title": "PaginatedCompanies",
        "required": [
          "items",
          "next_cursor",
          "limit",
          "fields"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "title": "Company",
              "description": "Normalisert selskaps-entitet. For Tier 1 dekker den norske AS/ASA fra Brreg.\nTier 2 utvider med svenske/danske/finske selskaper via lands-spesifikke\n`nationalIdType`-verdier (#410).\n",
              "required": [
                "orgnr",
                "nationalIdType",
                "country",
                "navn",
                "selskapsform",
                "status",
                "kontakt",
                "konkurs",
                "underAvvikling",
                "slettetIso",
                "sistHentetIso",
                "source"
              ],
              "properties": {
                "orgnr": {
                  "type": "string",
                  "pattern": "^\\d{9}$",
                  "description": "Norsk organisasjonsnummer (9 siffer).",
                  "example": "974760673"
                },
                "nationalIdType": {
                  "type": "string",
                  "enum": [
                    "ORGNR",
                    "CVR",
                    "ORGNR_SE",
                    "YTJ",
                    "KENNITALA"
                  ],
                  "description": "Hvilket nasjonalt register `orgnr` kommer fra. Disambiguerer ID-typen ved\nnordisk utvidelse (#410): `ORGNR` (NO Brreg), `CVR` (DK Erhvervsstyrelsen),\n`ORGNR_SE` (SE Bolagsverket), `YTJ` (FI PRH), `KENNITALA` (IS Skrá).\n",
                  "example": "ORGNR"
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "NO",
                    "SE",
                    "DK",
                    "FI",
                    "IS"
                  ],
                  "description": "ISO 3166-1 alpha-2-landkode for registeret. Del av entitets-identiteten.",
                  "example": "NO"
                },
                "navn": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Registrert selskapsnavn fra Brreg.",
                  "example": "Statens vegvesen"
                },
                "mvaNavn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet."
                },
                "selskapsform": {
                  "type": "string",
                  "enum": [
                    "AS",
                    "ASA",
                    "ENK",
                    "ANS",
                    "SA",
                    "IKS",
                    "KF",
                    "STI",
                    "FLI",
                    "ANNET"
                  ],
                  "description": "Selskapsform per Brreg-kategorisering."
                },
                "antallAnsatte": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Antall ansatte fra siste Brreg-snapshot."
                },
                "stiftetIso": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                  "example": "1864-07-01"
                },
                "forretningsadresse": {
                  "oneOf": [
                    {
                      "type": "object",
                      "title": "CompanyAddress",
                      "required": [
                        "adresse",
                        "postnummer",
                        "poststed",
                        "kommunenummer",
                        "land"
                      ],
                      "properties": {
                        "adresse": {
                          "type": "array",
                          "description": "Adresselinjer (gateadresse, etasje, etc.).",
                          "items": {
                            "type": "string"
                          },
                          "minItems": 0,
                          "maxItems": 3
                        },
                        "postnummer": {
                          "type": "string",
                          "pattern": "^\\d{4}$",
                          "description": "Norsk postnummer (4 siffer)."
                        },
                        "poststed": {
                          "type": "string",
                          "minLength": 1
                        },
                        "kommunenummer": {
                          "type": "string",
                          "pattern": "^\\d{4}$",
                          "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                        },
                        "land": {
                          "type": "string",
                          "enum": [
                            "NO"
                          ],
                          "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                        }
                      },
                      "example": {
                        "adresse": [
                          "Akersveien 26"
                        ],
                        "postnummer": "0177",
                        "poststed": "Oslo",
                        "kommunenummer": "0301",
                        "land": "NO"
                      }
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Registrert forretningsadresse, eller `null` når registeret ikke fører en\nkomplett adresse (slettede/fusjonerte enheter, enkelte\nutenlandsregistrerte). Vi lyver ikke med et tomt adresse-skall (#4255).\n"
                },
                "postadresse": {
                  "oneOf": [
                    {
                      "type": "object",
                      "title": "CompanyAddress",
                      "required": [
                        "adresse",
                        "postnummer",
                        "poststed",
                        "kommunenummer",
                        "land"
                      ],
                      "properties": {
                        "adresse": {
                          "type": "array",
                          "description": "Adresselinjer (gateadresse, etasje, etc.).",
                          "items": {
                            "type": "string"
                          },
                          "minItems": 0,
                          "maxItems": 3
                        },
                        "postnummer": {
                          "type": "string",
                          "pattern": "^\\d{4}$",
                          "description": "Norsk postnummer (4 siffer)."
                        },
                        "poststed": {
                          "type": "string",
                          "minLength": 1
                        },
                        "kommunenummer": {
                          "type": "string",
                          "pattern": "^\\d{4}$",
                          "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                        },
                        "land": {
                          "type": "string",
                          "enum": [
                            "NO"
                          ],
                          "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                        }
                      },
                      "example": {
                        "adresse": [
                          "Akersveien 26"
                        ],
                        "postnummer": "0177",
                        "poststed": "Oslo",
                        "kommunenummer": "0301",
                        "land": "NO"
                      }
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Postadresse hvis forskjellig fra forretningsadresse."
                },
                "kontakt": {
                  "type": "object",
                  "description": "Kontaktinformasjon (alle felter kan være null).",
                  "required": [
                    "epost",
                    "telefon",
                    "hjemmeside"
                  ],
                  "properties": {
                    "epost": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "email"
                    },
                    "telefon": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "hjemmeside": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri"
                    }
                  }
                },
                "naeringskode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Primært NACE-nummer (f.eks. `84.130`).",
                  "example": "84.130"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "aktiv",
                    "konkurs",
                    "under_avvikling",
                    "slettet"
                  ],
                  "description": "**Avledet status** — autoritativt KYB-/screening-signal. Presedens\n(høyest først): `slettet` (fjernet/fusjonert fra registeret) → `konkurs`\n→ `under_avvikling` → `aktiv`. En slettet enhet er terminal uansett\ngjenværende risiko-flagg. `under_avvikling` dekker også tvangsavvikling i\nden kanoniske modellen. De rå indikatorene `konkurs`/`underAvvikling`/\n`slettetIso` beholdes ved siden av (#4254).\n",
                  "example": "aktiv"
                },
                "konkurs": {
                  "type": "boolean",
                  "description": "**Risiko-flagg.** `true` hvis selskapet er registrert konkurs i Brreg.\nDirekte screening-/KYB-relevant — agenter som vurderer motparter bør lese\ndette feltet.\n",
                  "example": false
                },
                "underAvvikling": {
                  "type": "boolean",
                  "description": "**Risiko-flagg.** `true` hvis selskapet er under avvikling. Som `konkurs`\net konkret bool-signal for due diligence.\n",
                  "example": false
                },
                "slettetIso": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "**Risiko-flagg.** ISO-8601 slettedato hvis enheten er slettet/fusjonert i\nregisteret, ellers `null`. Driver `status:\"slettet\"`. En slettet motpart\nsom presenteres som aktiv er falsk trygghet i KYB-sjekken (#4254).\n",
                  "example": null
                },
                "sistHentetIso": {
                  "type": "string",
                  "minLength": 20,
                  "description": "Hentet-tidspunkt fra Brreg, ISO-8601.",
                  "example": "2026-05-04T08:30:00Z"
                },
                "source": {
                  "type": "string",
                  "description": "Proveniens — hvilken kilde som leverte denne snapshoten (jf.\nexplainability-moat #74). For Tier 1: `brreg:enhetsregisteret`.\n",
                  "example": "brreg:enhetsregisteret"
                },
                "apiVersion": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Versjon av kilde-API observert da payloaden ble hentet. Brukes for\ndrift-deteksjon; `null` når kilden ikke eksponerer en versjonsmarkør.\n",
                  "example": null
                }
              },
              "example": {
                "orgnr": "974760673",
                "nationalIdType": "ORGNR",
                "country": "NO",
                "navn": "Statens vegvesen",
                "mvaNavn": null,
                "selskapsform": "ANNET",
                "antallAnsatte": 7500,
                "stiftetIso": "1864-07-01",
                "forretningsadresse": {
                  "adresse": [
                    "Postboks 1010"
                  ],
                  "postnummer": "2605",
                  "poststed": "Lillehammer",
                  "kommunenummer": "3403",
                  "land": "NO"
                },
                "postadresse": null,
                "kontakt": {
                  "epost": "firmapost@vegvesen.no",
                  "telefon": "+47 22 07 30 00",
                  "hjemmeside": "https://www.vegvesen.no"
                },
                "naeringskode": "84.130",
                "status": "aktiv",
                "konkurs": false,
                "underAvvikling": false,
                "slettetIso": null,
                "sistHentetIso": "2026-05-04T08:30:00Z",
                "source": "brreg:enhetsregisteret",
                "apiVersion": null
              }
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opak cursor for neste side. `null` når listen er ferdig."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Default 20 for søk, 50 for list, cap 100."
          },
          "fields": {
            "type": "array",
            "description": "Hvilke felter som ble returnert (etter `fields=`-filter).",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CompanySearchItem": {
        "type": "object",
        "required": [
          "companyId",
          "idType",
          "name",
          "country",
          "status",
          "orgForm"
        ],
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Nasjonal selskaps-ID (NO orgnr, DK CVR, FI Y-tunnus).",
            "example": "923609016"
          },
          "idType": {
            "type": "string",
            "enum": [
              "NO_ORGNR",
              "DK_CVR",
              "FI_YTUNNUS"
            ],
            "description": "Hvilken ID-type companyId er — for videre-oppslag."
          },
          "orgnr": {
            "type": "string",
            "description": "Bakåtkomp-alias (= companyId) satt KUN for NO-treff.",
            "example": "923609016"
          },
          "name": {
            "type": "string",
            "example": "EQUINOR ASA"
          },
          "country": {
            "type": "string",
            "enum": [
              "NO",
              "DK",
              "FI"
            ],
            "example": "NO"
          },
          "status": {
            "type": "string",
            "example": "aktiv"
          },
          "orgForm": {
            "type": "string",
            "example": "ASA"
          }
        }
      },
      "CompanyEventItem": {
        "type": "object",
        "title": "CompanyEventItem",
        "required": [
          "eventId",
          "orgnr",
          "eventType",
          "source",
          "detectedIso"
        ],
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Stabil event-id på formen `{source}:{externalCursor}`. For brreg-feed:\n`brreg_enhetsregister:{oppdateringsid}`.\n",
            "pattern": "^[a-z][a-z0-9_]*:[A-Za-z0-9_.\\-]+$",
            "example": "brreg_enhetsregister:12345678"
          },
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "example": "974760673"
          },
          "eventType": {
            "type": "string",
            "description": "Canonical hendelsestype. For Brreg endringsfeed mappes\n`endringstype` til `brreg:enhet_opprettet|endret|slettet|fjernet`.\nUkjente verdier mappes til `brreg:enhet_ukjent` (forward-kompatibel).\n",
            "pattern": "^[a-z][a-z0-9_-]*:[a-z][a-z0-9_-]*$",
            "example": "brreg:enhet_endret"
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "detectedIso": {
            "type": "string",
            "minLength": 20,
            "description": "ISO-8601 tidsstempel da event ble observert/skrevet til warehouse.",
            "example": "2026-05-14T08:30:00.000Z"
          },
          "rawEndringstype": {
            "type": [
              "string",
              "null"
            ],
            "description": "Råverdi fra kilde-API. For Brreg: `\"Ny\" | \"Endring\" | \"Sletting\" | \"Fjernet\"`.\n`null` hvis kilden ikke leverer en endringstype.\n",
            "example": "Endring"
          },
          "externalCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kilde-spesifikk monotonisk cursor. For Brreg: `oppdateringsid` som string.\nBrukes internt til pagination — ikke en del av offentlig API-kontrakt.\n",
            "example": "12345678"
          }
        }
      },
      "PaginatedCompanyEvents": {
        "type": "object",
        "title": "PaginatedCompanyEvents",
        "required": [
          "items",
          "next_cursor",
          "limit",
          "orgnr"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "title": "CompanyEventItem",
              "required": [
                "eventId",
                "orgnr",
                "eventType",
                "source",
                "detectedIso"
              ],
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "Stabil event-id på formen `{source}:{externalCursor}`. For brreg-feed:\n`brreg_enhetsregister:{oppdateringsid}`.\n",
                  "pattern": "^[a-z][a-z0-9_]*:[A-Za-z0-9_.\\-]+$",
                  "example": "brreg_enhetsregister:12345678"
                },
                "orgnr": {
                  "type": "string",
                  "pattern": "^\\d{9}$",
                  "example": "974760673"
                },
                "eventType": {
                  "type": "string",
                  "description": "Canonical hendelsestype. For Brreg endringsfeed mappes\n`endringstype` til `brreg:enhet_opprettet|endret|slettet|fjernet`.\nUkjente verdier mappes til `brreg:enhet_ukjent` (forward-kompatibel).\n",
                  "pattern": "^[a-z][a-z0-9_-]*:[a-z][a-z0-9_-]*$",
                  "example": "brreg:enhet_endret"
                },
                "source": {
                  "type": "string",
                  "title": "SourceKey",
                  "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
                  "enum": [
                    "brreg",
                    "ssb",
                    "norges-bank",
                    "enhetsregister",
                    "proff",
                    "bygg-anlegg",
                    "eksportor",
                    "kartverket",
                    "sodir",
                    "ais",
                    "artskart",
                    "avinor",
                    "barentswatch",
                    "elhub",
                    "fhi",
                    "finanstilsynet",
                    "finansinspektionen-se",
                    "finanstilsynet-dk",
                    "fisheries",
                    "fri-nettleie",
                    "frost",
                    "geonorge",
                    "hoyesterett",
                    "konkurs",
                    "kommunedatabasen",
                    "kostra",
                    "lakselus",
                    "lovtidend",
                    "luftkvalitet",
                    "lysingsblad",
                    "mattilsynet-smilefjes",
                    "met",
                    "nav",
                    "nb-dhlab",
                    "norske-utslipp",
                    "nve",
                    "nvdb",
                    "oslobors",
                    "patentstyret",
                    "politiloggen",
                    "regjeringen",
                    "rss-news",
                    "sdir",
                    "stortinget",
                    "stromprise",
                    "udir",
                    "connectors",
                    "data-quality",
                    "audit",
                    "companies",
                    "persons",
                    "kg",
                    "sync",
                    "config",
                    "sync-state",
                    "storage",
                    "discovery",
                    "lineage",
                    "backup",
                    "metrics",
                    "dashboard",
                    "brreg-endringer",
                    "nav-grunnbelop"
                  ]
                },
                "detectedIso": {
                  "type": "string",
                  "minLength": 20,
                  "description": "ISO-8601 tidsstempel da event ble observert/skrevet til warehouse.",
                  "example": "2026-05-14T08:30:00.000Z"
                },
                "rawEndringstype": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Råverdi fra kilde-API. For Brreg: `\"Ny\" | \"Endring\" | \"Sletting\" | \"Fjernet\"`.\n`null` hvis kilden ikke leverer en endringstype.\n",
                  "example": "Endring"
                },
                "externalCursor": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Kilde-spesifikk monotonisk cursor. For Brreg: `oppdateringsid` som string.\nBrukes internt til pagination — ikke en del av offentlig API-kontrakt.\n",
                  "example": "12345678"
                }
              }
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opaque base64url-encoded cursor for neste side. `null` når listen er\nferdig. Klient skal sende cursoren videre uten å forsøke å parse den.\n",
            "example": "eyJvIjoxMjM0NTY3Nn0"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Antall items per side. Default 50, cap 100. Echoes inn-parameter slik\nat klient kan verifisere at serveren respekterte verdien.\n",
            "example": 50
          },
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Echoes path-parameteren slik at responsen er self-contained.",
            "example": "974760673"
          },
          "meta": {
            "type": "object",
            "description": "Kun til stede på tomme førstesider (#3459): skiller «selskapet har\ningen hendelser» fra «event-ingest er ikke aktiv». Når `meta.ingest.\ningestActive` er false skal et tomt svar IKKE tolkes som at\nselskapet mangler historikk.\n",
            "properties": {
              "ingest": {
                "type": "object",
                "required": [
                  "ingestActive",
                  "lastIngestAt",
                  "cursor"
                ],
                "properties": {
                  "ingestActive": {
                    "type": "boolean",
                    "description": "true når brreg-feed har committet cursor siste 24 t."
                  },
                  "lastIngestAt": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time",
                    "description": "Siste cursor-commit, null hvis ingest aldri har kjørt."
                  },
                  "cursor": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "description": "Siste committede Brreg-oppdateringsid."
                  },
                  "note": {
                    "type": "string",
                    "description": "Menneskelesbar forklaring når ingest ikke er aktiv."
                  }
                }
              }
            }
          }
        }
      },
      "CompanySnapshotItem": {
        "type": "object",
        "title": "CompanySnapshotItem",
        "required": [
          "snapshotId",
          "orgnr",
          "oppdateringsid",
          "snapshotAtIso",
          "company"
        ],
        "properties": {
          "snapshotId": {
            "type": "string",
            "description": "Snapshot-id (padded `oppdateringsid`, 12 siffer). Stabil og\nkronologisk sorterbar leksikografisk.\n",
            "example": "000000123456"
          },
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummeret snapshoten gjelder.",
            "example": "923609016"
          },
          "oppdateringsid": {
            "type": "integer",
            "description": "Brreg-endringsfeedens monotone oppdateringsid på tidspunktet snapshoten\nble skrevet. Brukes som cursor-posisjon (se `next_cursor`).\n",
            "example": 123456
          },
          "endringstype": {
            "type": [
              "string",
              "null"
            ],
            "description": "Brreg-endringstype som utløste snapshoten (f.eks. `Endring`, `Ny`,\n`Sletting`). `null` for initial/periodisk snapshot uten eksplisitt type.\n",
            "example": "Endring"
          },
          "snapshotAtIso": {
            "type": "string",
            "minLength": 20,
            "description": "Når snapshoten ble skrevet. ISO-8601.",
            "example": "2026-05-04T12:00:00.000Z"
          },
          "company": {
            "type": "object",
            "title": "Company",
            "description": "Normalisert selskaps-entitet. For Tier 1 dekker den norske AS/ASA fra Brreg.\nTier 2 utvider med svenske/danske/finske selskaper via lands-spesifikke\n`nationalIdType`-verdier (#410).\n",
            "required": [
              "orgnr",
              "nationalIdType",
              "country",
              "navn",
              "selskapsform",
              "status",
              "kontakt",
              "konkurs",
              "underAvvikling",
              "slettetIso",
              "sistHentetIso",
              "source"
            ],
            "properties": {
              "orgnr": {
                "type": "string",
                "pattern": "^\\d{9}$",
                "description": "Norsk organisasjonsnummer (9 siffer).",
                "example": "974760673"
              },
              "nationalIdType": {
                "type": "string",
                "enum": [
                  "ORGNR",
                  "CVR",
                  "ORGNR_SE",
                  "YTJ",
                  "KENNITALA"
                ],
                "description": "Hvilket nasjonalt register `orgnr` kommer fra. Disambiguerer ID-typen ved\nnordisk utvidelse (#410): `ORGNR` (NO Brreg), `CVR` (DK Erhvervsstyrelsen),\n`ORGNR_SE` (SE Bolagsverket), `YTJ` (FI PRH), `KENNITALA` (IS Skrá).\n",
                "example": "ORGNR"
              },
              "country": {
                "type": "string",
                "enum": [
                  "NO",
                  "SE",
                  "DK",
                  "FI",
                  "IS"
                ],
                "description": "ISO 3166-1 alpha-2-landkode for registeret. Del av entitets-identiteten.",
                "example": "NO"
              },
              "navn": {
                "type": "string",
                "minLength": 1,
                "description": "Registrert selskapsnavn fra Brreg.",
                "example": "Statens vegvesen"
              },
              "mvaNavn": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet."
              },
              "selskapsform": {
                "type": "string",
                "enum": [
                  "AS",
                  "ASA",
                  "ENK",
                  "ANS",
                  "SA",
                  "IKS",
                  "KF",
                  "STI",
                  "FLI",
                  "ANNET"
                ],
                "description": "Selskapsform per Brreg-kategorisering."
              },
              "antallAnsatte": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "description": "Antall ansatte fra siste Brreg-snapshot."
              },
              "stiftetIso": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                "example": "1864-07-01"
              },
              "forretningsadresse": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "CompanyAddress",
                    "required": [
                      "adresse",
                      "postnummer",
                      "poststed",
                      "kommunenummer",
                      "land"
                    ],
                    "properties": {
                      "adresse": {
                        "type": "array",
                        "description": "Adresselinjer (gateadresse, etasje, etc.).",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 0,
                        "maxItems": 3
                      },
                      "postnummer": {
                        "type": "string",
                        "pattern": "^\\d{4}$",
                        "description": "Norsk postnummer (4 siffer)."
                      },
                      "poststed": {
                        "type": "string",
                        "minLength": 1
                      },
                      "kommunenummer": {
                        "type": "string",
                        "pattern": "^\\d{4}$",
                        "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                      },
                      "land": {
                        "type": "string",
                        "enum": [
                          "NO"
                        ],
                        "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                      }
                    },
                    "example": {
                      "adresse": [
                        "Akersveien 26"
                      ],
                      "postnummer": "0177",
                      "poststed": "Oslo",
                      "kommunenummer": "0301",
                      "land": "NO"
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Registrert forretningsadresse, eller `null` når registeret ikke fører en\nkomplett adresse (slettede/fusjonerte enheter, enkelte\nutenlandsregistrerte). Vi lyver ikke med et tomt adresse-skall (#4255).\n"
              },
              "postadresse": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "CompanyAddress",
                    "required": [
                      "adresse",
                      "postnummer",
                      "poststed",
                      "kommunenummer",
                      "land"
                    ],
                    "properties": {
                      "adresse": {
                        "type": "array",
                        "description": "Adresselinjer (gateadresse, etasje, etc.).",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 0,
                        "maxItems": 3
                      },
                      "postnummer": {
                        "type": "string",
                        "pattern": "^\\d{4}$",
                        "description": "Norsk postnummer (4 siffer)."
                      },
                      "poststed": {
                        "type": "string",
                        "minLength": 1
                      },
                      "kommunenummer": {
                        "type": "string",
                        "pattern": "^\\d{4}$",
                        "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                      },
                      "land": {
                        "type": "string",
                        "enum": [
                          "NO"
                        ],
                        "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                      }
                    },
                    "example": {
                      "adresse": [
                        "Akersveien 26"
                      ],
                      "postnummer": "0177",
                      "poststed": "Oslo",
                      "kommunenummer": "0301",
                      "land": "NO"
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Postadresse hvis forskjellig fra forretningsadresse."
              },
              "kontakt": {
                "type": "object",
                "description": "Kontaktinformasjon (alle felter kan være null).",
                "required": [
                  "epost",
                  "telefon",
                  "hjemmeside"
                ],
                "properties": {
                  "epost": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "email"
                  },
                  "telefon": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "hjemmeside": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  }
                }
              },
              "naeringskode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Primært NACE-nummer (f.eks. `84.130`).",
                "example": "84.130"
              },
              "status": {
                "type": "string",
                "enum": [
                  "aktiv",
                  "konkurs",
                  "under_avvikling",
                  "slettet"
                ],
                "description": "**Avledet status** — autoritativt KYB-/screening-signal. Presedens\n(høyest først): `slettet` (fjernet/fusjonert fra registeret) → `konkurs`\n→ `under_avvikling` → `aktiv`. En slettet enhet er terminal uansett\ngjenværende risiko-flagg. `under_avvikling` dekker også tvangsavvikling i\nden kanoniske modellen. De rå indikatorene `konkurs`/`underAvvikling`/\n`slettetIso` beholdes ved siden av (#4254).\n",
                "example": "aktiv"
              },
              "konkurs": {
                "type": "boolean",
                "description": "**Risiko-flagg.** `true` hvis selskapet er registrert konkurs i Brreg.\nDirekte screening-/KYB-relevant — agenter som vurderer motparter bør lese\ndette feltet.\n",
                "example": false
              },
              "underAvvikling": {
                "type": "boolean",
                "description": "**Risiko-flagg.** `true` hvis selskapet er under avvikling. Som `konkurs`\net konkret bool-signal for due diligence.\n",
                "example": false
              },
              "slettetIso": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "**Risiko-flagg.** ISO-8601 slettedato hvis enheten er slettet/fusjonert i\nregisteret, ellers `null`. Driver `status:\"slettet\"`. En slettet motpart\nsom presenteres som aktiv er falsk trygghet i KYB-sjekken (#4254).\n",
                "example": null
              },
              "sistHentetIso": {
                "type": "string",
                "minLength": 20,
                "description": "Hentet-tidspunkt fra Brreg, ISO-8601.",
                "example": "2026-05-04T08:30:00Z"
              },
              "source": {
                "type": "string",
                "description": "Proveniens — hvilken kilde som leverte denne snapshoten (jf.\nexplainability-moat #74). For Tier 1: `brreg:enhetsregisteret`.\n",
                "example": "brreg:enhetsregisteret"
              },
              "apiVersion": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Versjon av kilde-API observert da payloaden ble hentet. Brukes for\ndrift-deteksjon; `null` når kilden ikke eksponerer en versjonsmarkør.\n",
                "example": null
              }
            },
            "example": {
              "orgnr": "974760673",
              "nationalIdType": "ORGNR",
              "country": "NO",
              "navn": "Statens vegvesen",
              "mvaNavn": null,
              "selskapsform": "ANNET",
              "antallAnsatte": 7500,
              "stiftetIso": "1864-07-01",
              "forretningsadresse": {
                "adresse": [
                  "Postboks 1010"
                ],
                "postnummer": "2605",
                "poststed": "Lillehammer",
                "kommunenummer": "3403",
                "land": "NO"
              },
              "postadresse": null,
              "kontakt": {
                "epost": "firmapost@vegvesen.no",
                "telefon": "+47 22 07 30 00",
                "hjemmeside": "https://www.vegvesen.no"
              },
              "naeringskode": "84.130",
              "status": "aktiv",
              "konkurs": false,
              "underAvvikling": false,
              "slettetIso": null,
              "sistHentetIso": "2026-05-04T08:30:00Z",
              "source": "brreg:enhetsregisteret",
              "apiVersion": null
            }
          }
        }
      },
      "PaginatedCompanySnapshots": {
        "type": "object",
        "title": "PaginatedCompanySnapshots",
        "required": [
          "items",
          "next_cursor",
          "limit",
          "orgnr"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "title": "CompanySnapshotItem",
              "required": [
                "snapshotId",
                "orgnr",
                "oppdateringsid",
                "snapshotAtIso",
                "company"
              ],
              "properties": {
                "snapshotId": {
                  "type": "string",
                  "description": "Snapshot-id (padded `oppdateringsid`, 12 siffer). Stabil og\nkronologisk sorterbar leksikografisk.\n",
                  "example": "000000123456"
                },
                "orgnr": {
                  "type": "string",
                  "pattern": "^\\d{9}$",
                  "description": "Organisasjonsnummeret snapshoten gjelder.",
                  "example": "923609016"
                },
                "oppdateringsid": {
                  "type": "integer",
                  "description": "Brreg-endringsfeedens monotone oppdateringsid på tidspunktet snapshoten\nble skrevet. Brukes som cursor-posisjon (se `next_cursor`).\n",
                  "example": 123456
                },
                "endringstype": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Brreg-endringstype som utløste snapshoten (f.eks. `Endring`, `Ny`,\n`Sletting`). `null` for initial/periodisk snapshot uten eksplisitt type.\n",
                  "example": "Endring"
                },
                "snapshotAtIso": {
                  "type": "string",
                  "minLength": 20,
                  "description": "Når snapshoten ble skrevet. ISO-8601.",
                  "example": "2026-05-04T12:00:00.000Z"
                },
                "company": {
                  "type": "object",
                  "title": "Company",
                  "description": "Normalisert selskaps-entitet. For Tier 1 dekker den norske AS/ASA fra Brreg.\nTier 2 utvider med svenske/danske/finske selskaper via lands-spesifikke\n`nationalIdType`-verdier (#410).\n",
                  "required": [
                    "orgnr",
                    "nationalIdType",
                    "country",
                    "navn",
                    "selskapsform",
                    "status",
                    "kontakt",
                    "konkurs",
                    "underAvvikling",
                    "slettetIso",
                    "sistHentetIso",
                    "source"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Norsk organisasjonsnummer (9 siffer).",
                      "example": "974760673"
                    },
                    "nationalIdType": {
                      "type": "string",
                      "enum": [
                        "ORGNR",
                        "CVR",
                        "ORGNR_SE",
                        "YTJ",
                        "KENNITALA"
                      ],
                      "description": "Hvilket nasjonalt register `orgnr` kommer fra. Disambiguerer ID-typen ved\nnordisk utvidelse (#410): `ORGNR` (NO Brreg), `CVR` (DK Erhvervsstyrelsen),\n`ORGNR_SE` (SE Bolagsverket), `YTJ` (FI PRH), `KENNITALA` (IS Skrá).\n",
                      "example": "ORGNR"
                    },
                    "country": {
                      "type": "string",
                      "enum": [
                        "NO",
                        "SE",
                        "DK",
                        "FI",
                        "IS"
                      ],
                      "description": "ISO 3166-1 alpha-2-landkode for registeret. Del av entitets-identiteten.",
                      "example": "NO"
                    },
                    "navn": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Registrert selskapsnavn fra Brreg.",
                      "example": "Statens vegvesen"
                    },
                    "mvaNavn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "MVA-registrert navn hvis forskjellig fra hoved-navnet."
                    },
                    "selskapsform": {
                      "type": "string",
                      "enum": [
                        "AS",
                        "ASA",
                        "ENK",
                        "ANS",
                        "SA",
                        "IKS",
                        "KF",
                        "STI",
                        "FLI",
                        "ANNET"
                      ],
                      "description": "Selskapsform per Brreg-kategorisering."
                    },
                    "antallAnsatte": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Antall ansatte fra siste Brreg-snapshot."
                    },
                    "stiftetIso": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                      "example": "1864-07-01"
                    },
                    "forretningsadresse": {
                      "oneOf": [
                        {
                          "type": "object",
                          "title": "CompanyAddress",
                          "required": [
                            "adresse",
                            "postnummer",
                            "poststed",
                            "kommunenummer",
                            "land"
                          ],
                          "properties": {
                            "adresse": {
                              "type": "array",
                              "description": "Adresselinjer (gateadresse, etasje, etc.).",
                              "items": {
                                "type": "string"
                              },
                              "minItems": 0,
                              "maxItems": 3
                            },
                            "postnummer": {
                              "type": "string",
                              "pattern": "^\\d{4}$",
                              "description": "Norsk postnummer (4 siffer)."
                            },
                            "poststed": {
                              "type": "string",
                              "minLength": 1
                            },
                            "kommunenummer": {
                              "type": "string",
                              "pattern": "^\\d{4}$",
                              "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                            },
                            "land": {
                              "type": "string",
                              "enum": [
                                "NO"
                              ],
                              "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                            }
                          },
                          "example": {
                            "adresse": [
                              "Akersveien 26"
                            ],
                            "postnummer": "0177",
                            "poststed": "Oslo",
                            "kommunenummer": "0301",
                            "land": "NO"
                          }
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Registrert forretningsadresse, eller `null` når registeret ikke fører en\nkomplett adresse (slettede/fusjonerte enheter, enkelte\nutenlandsregistrerte). Vi lyver ikke med et tomt adresse-skall (#4255).\n"
                    },
                    "postadresse": {
                      "oneOf": [
                        {
                          "type": "object",
                          "title": "CompanyAddress",
                          "required": [
                            "adresse",
                            "postnummer",
                            "poststed",
                            "kommunenummer",
                            "land"
                          ],
                          "properties": {
                            "adresse": {
                              "type": "array",
                              "description": "Adresselinjer (gateadresse, etasje, etc.).",
                              "items": {
                                "type": "string"
                              },
                              "minItems": 0,
                              "maxItems": 3
                            },
                            "postnummer": {
                              "type": "string",
                              "pattern": "^\\d{4}$",
                              "description": "Norsk postnummer (4 siffer)."
                            },
                            "poststed": {
                              "type": "string",
                              "minLength": 1
                            },
                            "kommunenummer": {
                              "type": "string",
                              "pattern": "^\\d{4}$",
                              "description": "Norsk kommunenummer per Kartverkets matrikkel (4 siffer)."
                            },
                            "land": {
                              "type": "string",
                              "enum": [
                                "NO"
                              ],
                              "description": "Tier 1 dekker kun NO. Utvides til SE/DK/FI/IS i Tier 2 (#410)."
                            }
                          },
                          "example": {
                            "adresse": [
                              "Akersveien 26"
                            ],
                            "postnummer": "0177",
                            "poststed": "Oslo",
                            "kommunenummer": "0301",
                            "land": "NO"
                          }
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Postadresse hvis forskjellig fra forretningsadresse."
                    },
                    "kontakt": {
                      "type": "object",
                      "description": "Kontaktinformasjon (alle felter kan være null).",
                      "required": [
                        "epost",
                        "telefon",
                        "hjemmeside"
                      ],
                      "properties": {
                        "epost": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "email"
                        },
                        "telefon": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "hjemmeside": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "uri"
                        }
                      }
                    },
                    "naeringskode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Primært NACE-nummer (f.eks. `84.130`).",
                      "example": "84.130"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "aktiv",
                        "konkurs",
                        "under_avvikling",
                        "slettet"
                      ],
                      "description": "**Avledet status** — autoritativt KYB-/screening-signal. Presedens\n(høyest først): `slettet` (fjernet/fusjonert fra registeret) → `konkurs`\n→ `under_avvikling` → `aktiv`. En slettet enhet er terminal uansett\ngjenværende risiko-flagg. `under_avvikling` dekker også tvangsavvikling i\nden kanoniske modellen. De rå indikatorene `konkurs`/`underAvvikling`/\n`slettetIso` beholdes ved siden av (#4254).\n",
                      "example": "aktiv"
                    },
                    "konkurs": {
                      "type": "boolean",
                      "description": "**Risiko-flagg.** `true` hvis selskapet er registrert konkurs i Brreg.\nDirekte screening-/KYB-relevant — agenter som vurderer motparter bør lese\ndette feltet.\n",
                      "example": false
                    },
                    "underAvvikling": {
                      "type": "boolean",
                      "description": "**Risiko-flagg.** `true` hvis selskapet er under avvikling. Som `konkurs`\net konkret bool-signal for due diligence.\n",
                      "example": false
                    },
                    "slettetIso": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "**Risiko-flagg.** ISO-8601 slettedato hvis enheten er slettet/fusjonert i\nregisteret, ellers `null`. Driver `status:\"slettet\"`. En slettet motpart\nsom presenteres som aktiv er falsk trygghet i KYB-sjekken (#4254).\n",
                      "example": null
                    },
                    "sistHentetIso": {
                      "type": "string",
                      "minLength": 20,
                      "description": "Hentet-tidspunkt fra Brreg, ISO-8601.",
                      "example": "2026-05-04T08:30:00Z"
                    },
                    "source": {
                      "type": "string",
                      "description": "Proveniens — hvilken kilde som leverte denne snapshoten (jf.\nexplainability-moat #74). For Tier 1: `brreg:enhetsregisteret`.\n",
                      "example": "brreg:enhetsregisteret"
                    },
                    "apiVersion": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Versjon av kilde-API observert da payloaden ble hentet. Brukes for\ndrift-deteksjon; `null` når kilden ikke eksponerer en versjonsmarkør.\n",
                      "example": null
                    }
                  },
                  "example": {
                    "orgnr": "974760673",
                    "nationalIdType": "ORGNR",
                    "country": "NO",
                    "navn": "Statens vegvesen",
                    "mvaNavn": null,
                    "selskapsform": "ANNET",
                    "antallAnsatte": 7500,
                    "stiftetIso": "1864-07-01",
                    "forretningsadresse": {
                      "adresse": [
                        "Postboks 1010"
                      ],
                      "postnummer": "2605",
                      "poststed": "Lillehammer",
                      "kommunenummer": "3403",
                      "land": "NO"
                    },
                    "postadresse": null,
                    "kontakt": {
                      "epost": "firmapost@vegvesen.no",
                      "telefon": "+47 22 07 30 00",
                      "hjemmeside": "https://www.vegvesen.no"
                    },
                    "naeringskode": "84.130",
                    "status": "aktiv",
                    "konkurs": false,
                    "underAvvikling": false,
                    "slettetIso": null,
                    "sistHentetIso": "2026-05-04T08:30:00Z",
                    "source": "brreg:enhetsregisteret",
                    "apiVersion": null
                  }
                }
              }
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opaque base64url-encoded cursor for neste side (`{\"o\": <oppdateringsid>}`).\n`null` når listen er ferdig. Klient skal sende cursoren videre uten å\nforsøke å parse den.\n",
            "example": "eyJvIjoxMjM0NTZ9"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Antall items per side. Default 50, cap 100. Echoes inn-parameter slik\nat klient kan verifisere at serveren respekterte verdien.\n",
            "example": 50
          },
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Echoes path-parameteren slik at responsen er self-contained.",
            "example": "923609016"
          },
          "meta": {
            "type": "object",
            "description": "Kun til stede på tomme førstesider (#3459): skiller «selskapet har\ningen snapshots» fra «event-ingest er ikke aktiv». Når `meta.ingest.\ningestActive` er false skal et tomt svar IKKE tolkes som at\nselskapet mangler historikk.\n",
            "properties": {
              "ingest": {
                "type": "object",
                "required": [
                  "ingestActive",
                  "lastIngestAt",
                  "cursor"
                ],
                "properties": {
                  "ingestActive": {
                    "type": "boolean",
                    "description": "true når brreg-feed har committet cursor siste 24 t."
                  },
                  "lastIngestAt": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time",
                    "description": "Siste cursor-commit, null hvis ingest aldri har kjørt."
                  },
                  "cursor": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "description": "Siste committede Brreg-oppdateringsid."
                  },
                  "note": {
                    "type": "string",
                    "description": "Menneskelesbar forklaring når ingest ikke er aktiv."
                  }
                }
              }
            }
          }
        }
      },
      "Problem": {
        "type": "object",
        "title": "Problem",
        "required": [
          "type",
          "title",
          "status"
        ],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri-reference",
            "default": "about:blank",
            "description": "Stabil identifikator for feiltypen.",
            "example": "https://data.ketl.no/errors/rate-limit-exceeded"
          },
          "title": {
            "type": "string",
            "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
          },
          "status": {
            "type": "integer",
            "minimum": 100,
            "maximum": 599
          },
          "detail": {
            "type": [
              "string",
              "null"
            ],
            "description": "Konkret beskrivelse av denne instansen."
          },
          "instance": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri-reference",
            "description": "URI til denne instansen av feilen (f.eks. en request-id)."
          },
          "ketlRequestId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
          },
          "ketlRetryAfterMs": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
          }
        },
        "example": {
          "type": "https://data.ketl.no/errors/rate-limit-exceeded",
          "title": "Rate limit exceeded",
          "status": 429,
          "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
          "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
          "ketlRetryAfterMs": 60000
        }
      },
      "Health": {
        "type": "object",
        "title": "Health",
        "required": [
          "status",
          "version",
          "timestamp"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "degraded",
              "down"
            ]
          },
          "version": {
            "type": "string",
            "description": "Build-SHA + tidstempel (`<sha>-<iso>`).",
            "example": "c36f542-2026-05-04T12:00:00Z"
          },
          "timestamp": {
            "type": "string",
            "minLength": 20,
            "description": "ISO-8601 server-tid."
          },
          "upstream": {
            "type": "object",
            "description": "Status for hver upstream-avhengighet. `database` rapporterer Cloud\nSQL-tilstand (#3304): \"unknown\" til PG_CONNECTION_STRING er bundet\n(#3302/#3303), deretter \"ok\"/\"down\" fra `dbHealth()`. Detaljer\n(latency, feilmelding) ligger under `diagnostics.database`.\n",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "ok",
                "degraded",
                "down",
                "unknown"
              ]
            },
            "example": {
              "service": "ok",
              "database": "ok",
              "firestore": "ok",
              "stripe": "ok"
            }
          },
          "diagnostics": {
            "type": [
              "object",
              "null"
            ],
            "description": "ketl-spesifikke diagnostiske felt (utenfor offentlig RFC-kontrakt).\nBrukes av admin-UI og uptime-bots for å se proxy-tilstand. Kan\ninneholde proxyBaseUrl, proxyKnownDead, proxyKnownDeadIssue (#414).\n",
            "additionalProperties": true,
            "example": {
              "proxyBaseUrl": "https://data.ketl.no",
              "proxyBaseUrlSource": "prod-default",
              "proxyKnownDead": false,
              "proxyKnownDeadIssue": null
            }
          }
        }
      },
      "AppRunResult": {
        "type": "object",
        "required": [
          "app",
          "params",
          "data",
          "_sources",
          "partial",
          "_generatedAt"
        ],
        "properties": {
          "app": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "category": {
                "type": "string"
              },
              "tier": {
                "type": "string",
                "enum": [
                  "free",
                  "pro"
                ]
              }
            }
          },
          "params": {
            "type": "object",
            "description": "Parametrene som ble brukt (placeholders + videresendte filtre).",
            "additionalProperties": {
              "type": "string"
            }
          },
          "data": {
            "type": "object",
            "description": "Rådata per kilde-nøkkel (vanligvis `source`).",
            "additionalProperties": true
          },
          "_sources": {
            "type": "object",
            "description": "Per-kilde-herkomst for hver dataSpec-binding.",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "source": {
                  "type": "string"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "primary",
                    "enrichment",
                    "crossref"
                  ]
                },
                "refresh": {
                  "type": "string"
                },
                "joinKey": {
                  "type": "string"
                },
                "endpoint": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "description": "HTTP-status (tall) eller symbolsk feilkode (`missing_params`/`error`)."
                },
                "ok": {
                  "type": "boolean"
                },
                "latencyMs": {
                  "type": "integer"
                },
                "cacheHit": {
                  "type": "boolean"
                },
                "error": {
                  "type": "string"
                }
              }
            }
          },
          "partial": {
            "type": "boolean",
            "description": "`true` hvis en enrichment/crossref-kilde er degradert."
          },
          "_generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Case": {
        "type": "object",
        "title": "Case",
        "description": "Kilde-agnostisk normalisert sak-entitet. For Tier 2 dekker den\nnorske Hoyesterett-/Lagmannsretts-avgjørelser og tilsyns-vedtak fra\nFinanstilsynet og Datatilsynet. Tier 3 utvider med EU-domstoler\n(CURIA, ECHR) og nordiske domstoler.\n",
        "required": [
          "caseId",
          "caseType",
          "title",
          "decisionDateIso",
          "source",
          "sistHentetIso"
        ],
        "properties": {
          "caseId": {
            "type": "string",
            "description": "Stabil sak-ID generert av ketl (`<source>-<external-id>`).",
            "pattern": "^[a-z][a-z0-9-]+$",
            "example": "hoyesterett-2026-512"
          },
          "caseType": {
            "type": "string",
            "enum": [
              "rettsavgjorelse",
              "tilsyns-vedtak",
              "forvaltnings-vedtak",
              "kjennelse",
              "annet"
            ],
            "description": "Sak-type per kilde-klassifisering."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "Sakens tittel (norsk eller engelsk)."
          },
          "decisionDateIso": {
            "type": "string",
            "description": "Avgjørelses-dato. ISO-8601 (date eller datetime)."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kildens egen sak-referanse (HR-2026-512-A, vedtak-nr, …)."
          },
          "legalArea": {
            "type": "array",
            "description": "Juridisk område (selskapsrett, GDPR, AMLA, …).",
            "items": {
              "type": "string"
            }
          },
          "summary": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 4000,
            "description": "AI- eller kilde-generert sammendrag."
          },
          "documentUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Lenke til original-dokument hos kilden."
          },
          "sistHentetIso": {
            "type": "string",
            "description": "ISO-8601 — når ketl sist hentet denne saken."
          }
        },
        "example": {
          "caseId": "hoyesterett-2026-512",
          "caseType": "rettsavgjorelse",
          "title": "Sak om uavhengighet hos revisor under konkurs",
          "decisionDateIso": "2026-03-14",
          "source": "hoyesterett",
          "externalId": "HR-2026-512-A",
          "legalArea": [
            "selskapsrett",
            "revisjon"
          ],
          "summary": "Hoyesterett konkluderte med at revisor brøt uavhengighetskravene etter Revisorloven § 4-1 ved …",
          "documentUrl": "https://www.domstol.no/no/hoyesterett/avgjorelser/2026/HR-2026-512-A.pdf",
          "sistHentetIso": "2026-05-24T08:00:00Z"
        }
      },
      "Regulation": {
        "type": "object",
        "title": "Regulation",
        "description": "Kilde-agnostisk normalisert lov-/forskrift-entitet. Tier 2 dekker\nLovdata + Lovtidend. Tier 3 utvider med EUR-Lex og nordisk lovgivning.\n",
        "required": [
          "regulationId",
          "title",
          "jurisdiction",
          "statusType",
          "source",
          "sistHentetIso"
        ],
        "properties": {
          "regulationId": {
            "type": "string",
            "description": "Stabil lov-ID (`<jurisdiction>-<external-id>`).",
            "pattern": "^[a-z]{2,6}-[a-z0-9-]+$",
            "example": "no-lov-1999-07-16-66"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "Lovens/forskriftens offisielle tittel."
          },
          "shortTitle": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kort-form (revisorloven, regnskapsloven, …)."
          },
          "jurisdiction": {
            "type": "string",
            "enum": [
              "no",
              "se",
              "dk",
              "fi",
              "is",
              "eu"
            ],
            "description": "Juridisk territorium loven gjelder i."
          },
          "statusType": {
            "type": "string",
            "enum": [
              "active",
              "repealed",
              "draft",
              "transitional"
            ],
            "description": "Status per kilde-klassifisering."
          },
          "inForceDateIso": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-8601 — når loven trådte i kraft."
          },
          "repealedDateIso": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-8601 — når loven ble opphevet (hvis statusType=repealed)."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kildens egen referanse (LOV-1999-07-16-66, EUR-Lex CELEX, …)."
          },
          "legalArea": {
            "type": "array",
            "description": "Juridisk område (revisjon, GDPR, finans, …).",
            "items": {
              "type": "string"
            }
          },
          "documentUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Lenke til offisiell tekst."
          },
          "sistHentetIso": {
            "type": "string",
            "description": "ISO-8601 — når ketl sist hentet denne loven."
          }
        },
        "example": {
          "regulationId": "no-lov-1999-07-16-66",
          "title": "Lov om revisjon og revisorer",
          "shortTitle": "revisorloven",
          "jurisdiction": "no",
          "statusType": "active",
          "inForceDateIso": "2000-01-01",
          "source": "lovdata",
          "externalId": "LOV-1999-07-16-66",
          "legalArea": [
            "revisjon",
            "selskapsrett"
          ],
          "documentUrl": "https://lovdata.no/dokument/NL/lov/1999-07-16-66",
          "sistHentetIso": "2026-05-24T08:00:00Z"
        }
      },
      "StatisticsTable": {
        "type": "object",
        "title": "StatisticsTable",
        "description": "Kilde-agnostisk normalisert statistikk-tabell-metadata. Dekker PxWeb-\nbaserte kilder (SSB, SCB, DST, Tilastokeskus). Selve tabellverdiene\nfetches via kilde-spesifikt endepunkt (`/api/data/{kilde}/tabell/{id}`).\n",
        "required": [
          "tableId",
          "title",
          "jurisdiction",
          "source",
          "dimensions",
          "sistHentetIso"
        ],
        "properties": {
          "tableId": {
            "type": "string",
            "description": "Stabil tabell-ID (`<source>-<external-id>`).",
            "pattern": "^[a-z][a-z0-9-]+$",
            "example": "ssb-09010"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "Tabellens tittel."
          },
          "jurisdiction": {
            "type": "string",
            "enum": [
              "no",
              "se",
              "dk",
              "fi",
              "is",
              "eu",
              "nordic"
            ],
            "description": "Geografisk dekning."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kildens egen tabell-ID (09010, AKU01, …)."
          },
          "dimensions": {
            "type": "array",
            "description": "Dimensjoner i tabellen (tid, geografi, kjønn, …).",
            "items": {
              "type": "object",
              "required": [
                "code",
                "label"
              ],
              "properties": {
                "code": {
                  "type": "string",
                  "description": "Dimensjon-kode brukt i kilde-API."
                },
                "label": {
                  "type": "string",
                  "description": "Menneskelig label."
                },
                "valueCount": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "Antall verdier i denne dimensjonen."
                }
              }
            }
          },
          "updateFrequency": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "quarterly",
              "yearly",
              "irregular",
              null
            ],
            "description": "Hvor ofte tabellen oppdateres."
          },
          "lastUpdatedIso": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-8601 — sist oppdatert hos kilden."
          },
          "unit": {
            "type": [
              "string",
              "null"
            ],
            "description": "Måleenhet (kroner, prosent, antall personer, …)."
          },
          "documentUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Lenke til kildens tabellbeskrivelse."
          },
          "sistHentetIso": {
            "type": "string",
            "description": "ISO-8601 — når ketl sist hentet metadata."
          }
        },
        "example": {
          "tableId": "ssb-09010",
          "title": "Konsumprisindeks etter konsumgruppe og innhold",
          "jurisdiction": "no",
          "source": "ssb",
          "externalId": "09010",
          "dimensions": [
            {
              "code": "Tid",
              "label": "Måned",
              "valueCount": 480
            },
            {
              "code": "Konsumgrp",
              "label": "Konsumgruppe",
              "valueCount": 14
            }
          ],
          "updateFrequency": "monthly",
          "lastUpdatedIso": "2026-05-10T08:00:00Z",
          "unit": "indekspoeng (2015=100)",
          "documentUrl": "https://www.ssb.no/statbank/table/09010",
          "sistHentetIso": "2026-05-24T08:00:00Z"
        }
      },
      "WeatherObservation": {
        "type": "object",
        "title": "WeatherObservation",
        "description": "Kilde-agnostisk normalisert vær-/klima-observasjon. Hvert objekt\nrepresenterer ett målepunkt (sted + tid + element). Tids-serier\nfetches som arrays av denne entiteten.\n",
        "required": [
          "observationId",
          "element",
          "value",
          "unit",
          "observedIso",
          "location",
          "source",
          "sistHentetIso"
        ],
        "properties": {
          "observationId": {
            "type": "string",
            "description": "Stabil observasjons-ID (`<source>-<station>-<element>-<ts>`).",
            "pattern": "^[a-z][a-z0-9-]+$",
            "example": "met-SN18700-air_temperature-2026-05-25T08-00"
          },
          "element": {
            "type": "string",
            "description": "Met-element-kode (CF-standard når mulig).",
            "example": "air_temperature"
          },
          "value": {
            "type": "number",
            "description": "Måleverdi i `unit`.",
            "example": 14.3
          },
          "unit": {
            "type": "string",
            "description": "SI-enhet eller domene-konvensjon (°C, m/s, mm/h, …).",
            "example": "degC"
          },
          "observedIso": {
            "type": "string",
            "description": "ISO-8601 — når observasjonen ble tatt.",
            "example": "2026-05-25T08:00:00Z"
          },
          "location": {
            "type": "object",
            "required": [
              "stationId",
              "latitude",
              "longitude"
            ],
            "properties": {
              "stationId": {
                "type": "string",
                "description": "Kildens stasjons-ID (SN18700, sm-stockholm-c, …)."
              },
              "stationName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "latitude": {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              },
              "longitude": {
                "type": "number",
                "minimum": -180,
                "maximum": 180
              },
              "altitudeMeters": {
                "type": [
                  "number",
                  "null"
                ]
              }
            }
          },
          "qualityFlag": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kvalitets-flagg fra kilden (ok, suspect, missing, …)."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kildens egen observasjons-referanse."
          },
          "sistHentetIso": {
            "type": "string",
            "description": "ISO-8601 — når ketl sist hentet observasjonen."
          }
        },
        "example": {
          "observationId": "met-SN18700-air_temperature-2026-05-25T08-00",
          "element": "air_temperature",
          "value": 14.3,
          "unit": "degC",
          "observedIso": "2026-05-25T08:00:00Z",
          "location": {
            "stationId": "SN18700",
            "stationName": "Oslo - Blindern",
            "latitude": 59.9423,
            "longitude": 10.7204,
            "altitudeMeters": 94
          },
          "qualityFlag": "ok",
          "source": "met",
          "externalId": "SN18700-2026052508",
          "sistHentetIso": "2026-05-25T08:05:00Z"
        }
      },
      "TransportEvent": {
        "type": "object",
        "title": "TransportEvent",
        "description": "Kilde-agnostisk normalisert transport-hendelse. Hvert objekt\nrepresenterer én observasjon eller status (skip-posisjon, tog-\nforsinkelse, fly-status, vegmelding). Tidsserier leveres som arrays.\n",
        "required": [
          "eventId",
          "modality",
          "eventType",
          "observedIso",
          "source",
          "sistHentetIso"
        ],
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Stabil hendelses-ID (`<source>-<vehicle>-<ts>`).",
            "pattern": "^[a-z][a-z0-9-]+$",
            "example": "barentswatch-258123000-2026-05-25T08-00"
          },
          "modality": {
            "type": "string",
            "enum": [
              "sea",
              "rail",
              "road",
              "air",
              "public-transit"
            ],
            "description": "Transport-modus."
          },
          "eventType": {
            "type": "string",
            "enum": [
              "position",
              "delay",
              "cancellation",
              "status-change",
              "incident",
              "notice"
            ],
            "description": "Hendelses-type."
          },
          "observedIso": {
            "type": "string",
            "description": "ISO-8601 — når hendelsen oppstod."
          },
          "vehicleId": {
            "type": [
              "string",
              "null"
            ],
            "description": "MMSI for skip, train-number for tog, flight-number for fly."
          },
          "vehicleName": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "latitude": {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              },
              "longitude": {
                "type": "number",
                "minimum": -180,
                "maximum": 180
              },
              "placeId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Stasjon, havn, flyplass eller veg-link-ID."
              },
              "placeName": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "durationMinutes": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Forsinkelse eller varighet i minutter (når relevant)."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 1000,
            "description": "Norsk beskrivelse av hendelsen."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kildens egen hendelses-referanse."
          },
          "sistHentetIso": {
            "type": "string",
            "description": "ISO-8601 — når ketl sist hentet hendelsen."
          }
        },
        "example": {
          "eventId": "barentswatch-258123000-2026-05-25T08-00",
          "modality": "sea",
          "eventType": "position",
          "observedIso": "2026-05-25T08:00:00Z",
          "vehicleId": "258123000",
          "vehicleName": "MS Demo Fjord",
          "location": {
            "latitude": 60.3913,
            "longitude": 5.3221,
            "placeName": "Bergen havn"
          },
          "description": "Skip i posisjon i Bergen havn",
          "source": "barentswatch",
          "externalId": "ais-258123000-202605250800",
          "sistHentetIso": "2026-05-25T08:01:00Z"
        }
      },
      "EnvironmentMeasurement": {
        "type": "object",
        "title": "EnvironmentMeasurement",
        "description": "Kilde-agnostisk normalisert miljø-måling. Dekker luftkvalitet,\nutslipp, vannkvalitet, biologisk mangfold (artsobservasjoner) og\narealdekning. Tidsserier og spatial-data leveres som arrays.\n",
        "required": [
          "measurementId",
          "category",
          "parameter",
          "value",
          "unit",
          "observedIso",
          "source",
          "sistHentetIso"
        ],
        "properties": {
          "measurementId": {
            "type": "string",
            "description": "Stabil måle-ID (`<source>-<station>-<parameter>-<ts>`).",
            "pattern": "^[a-z][a-z0-9-]+$",
            "example": "nilu-no-NO0001A-no2-2026-05-25T08-00"
          },
          "category": {
            "type": "string",
            "enum": [
              "air-quality",
              "water-quality",
              "emissions",
              "protected-area",
              "species-observation",
              "land-use"
            ],
            "description": "Måle-kategori."
          },
          "parameter": {
            "type": "string",
            "description": "Måle-parameter (NO2, PM2.5, CO2, pH, …) eller artsnavn.",
            "example": "NO2"
          },
          "value": {
            "type": "number",
            "description": "Måleverdi i `unit`. For artsobservasjoner: antall observasjoner."
          },
          "unit": {
            "type": "string",
            "description": "SI-enhet eller domene-konvensjon (µg/m3, mg/l, count, …).",
            "example": "µg/m3"
          },
          "observedIso": {
            "type": "string",
            "description": "ISO-8601 — observasjons-tidspunkt eller intervall-start."
          },
          "location": {
            "type": "object",
            "required": [
              "latitude",
              "longitude"
            ],
            "properties": {
              "stationId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "stationName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "latitude": {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              },
              "longitude": {
                "type": "number",
                "minimum": -180,
                "maximum": 180
              },
              "areaName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "For protected-area / land-use: navn på området."
              }
            }
          },
          "qualityFlag": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kvalitets-flagg (validated, provisional, suspect, …)."
          },
          "source": {
            "type": "string",
            "title": "SourceKey",
            "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
            "enum": [
              "brreg",
              "ssb",
              "norges-bank",
              "enhetsregister",
              "proff",
              "bygg-anlegg",
              "eksportor",
              "kartverket",
              "sodir",
              "ais",
              "artskart",
              "avinor",
              "barentswatch",
              "elhub",
              "fhi",
              "finanstilsynet",
              "finansinspektionen-se",
              "finanstilsynet-dk",
              "fisheries",
              "fri-nettleie",
              "frost",
              "geonorge",
              "hoyesterett",
              "konkurs",
              "kommunedatabasen",
              "kostra",
              "lakselus",
              "lovtidend",
              "luftkvalitet",
              "lysingsblad",
              "mattilsynet-smilefjes",
              "met",
              "nav",
              "nb-dhlab",
              "norske-utslipp",
              "nve",
              "nvdb",
              "oslobors",
              "patentstyret",
              "politiloggen",
              "regjeringen",
              "rss-news",
              "sdir",
              "stortinget",
              "stromprise",
              "udir",
              "connectors",
              "data-quality",
              "audit",
              "companies",
              "persons",
              "kg",
              "sync",
              "config",
              "sync-state",
              "storage",
              "discovery",
              "lineage",
              "backup",
              "metrics",
              "dashboard",
              "brreg-endringer",
              "nav-grunnbelop"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kildens egen måle-referanse."
          },
          "sistHentetIso": {
            "type": "string",
            "description": "ISO-8601 — når ketl sist hentet målingen."
          }
        },
        "example": {
          "measurementId": "nilu-no-NO0001A-no2-2026-05-25T08-00",
          "category": "air-quality",
          "parameter": "NO2",
          "value": 23.5,
          "unit": "µg/m3",
          "observedIso": "2026-05-25T08:00:00Z",
          "location": {
            "stationId": "NO0001A",
            "stationName": "Oslo Kirkeveien",
            "latitude": 59.9344,
            "longitude": 10.7202
          },
          "qualityFlag": "validated",
          "source": "nilu",
          "externalId": "NO0001A-NO2-202605250800",
          "sistHentetIso": "2026-05-25T08:30:00Z"
        }
      },
      "ConnectorBrregEnhet": {
        "type": "object",
        "title": "ConnectorBrregEnhet",
        "additionalProperties": false,
        "description": "Normalisert enhet fra Enhetsregisteret (Brreg), slik connector-ruten\n`/api/connectors/brreg/{orgnr}` serverer den. Kilde-agnostiske felt-navn\n(`legalName`, `organizationForm`) — den interne #1119-Normalized-formen.\n",
        "required": [
          "companyKey",
          "country",
          "identifiers",
          "legalName",
          "status",
          "updatedAt",
          "source"
        ],
        "properties": {
          "companyKey": {
            "type": "string",
            "description": "Intern, stabil entitetsnøkkel (`NO:<orgnr>`).",
            "example": "NO:974760673"
          },
          "country": {
            "type": "string",
            "enum": [
              "NO"
            ],
            "description": "ISO 3166-1 alpha-2-landkode for registeret. Brreg er alltid `NO`.",
            "example": "NO"
          },
          "identifiers": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "country",
              "orgnr"
            ],
            "description": "Nasjonal identifikator for enheten.",
            "properties": {
              "country": {
                "type": "string",
                "enum": [
                  "NO"
                ]
              },
              "orgnr": {
                "type": "string",
                "pattern": "^\\d{9}$",
                "description": "Norsk organisasjonsnummer (9 siffer).",
                "example": "974760673"
              }
            }
          },
          "legalName": {
            "type": "string",
            "minLength": 1,
            "description": "Registrert foretaksnavn.",
            "example": "STATENS VEGVESEN"
          },
          "status": {
            "type": "string",
            "description": "Aggregert status-streng utledet fra Brreg-flagg (f.eks. `active`,\n`bankrupt`, `under-liquidation`).\n",
            "example": "active"
          },
          "organizationForm": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "description"
            ],
            "description": "Organisasjonsform per Brreg-kodeverk.",
            "properties": {
              "code": {
                "type": "string",
                "example": "ORGL"
              },
              "description": {
                "type": "string",
                "example": "Organisasjonsledd"
              }
            }
          },
          "industryCode": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "description"
            ],
            "description": "Primær næringskode (NACE).",
            "properties": {
              "code": {
                "type": "string",
                "example": "84.130"
              },
              "description": {
                "type": "string",
                "example": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
              }
            }
          },
          "address": {
            "type": "object",
            "additionalProperties": false,
            "description": "Forretningsadresse (alle delfelt er valgfrie).",
            "properties": {
              "street": {
                "type": "string",
                "example": "Postboks 1010 Nordre Ål"
              },
              "postalCode": {
                "type": "string",
                "example": "2605"
              },
              "city": {
                "type": "string",
                "example": "LILLEHAMMER"
              },
              "municipality": {
                "type": "string",
                "example": "LILLEHAMMER"
              },
              "municipalityCode": {
                "type": "string",
                "example": "3405"
              },
              "country": {
                "type": "string",
                "example": "NO"
              }
            }
          },
          "foundedDate": {
            "type": "string",
            "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
            "example": "1864-07-01"
          },
          "registrationDate": {
            "type": "string",
            "description": "Registreringsdato i Enhetsregisteret (ISO-8601 `YYYY-MM-DD`).",
            "example": "1995-08-09"
          },
          "employeeCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall ansatte fra siste Brreg-snapshot.",
            "example": 7500
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Tidspunkt da enheten sist ble normalisert (ISO-8601).",
            "example": "2026-05-04T08:30:00.000Z"
          },
          "source": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "system",
              "fetchedAt"
            ],
            "description": "Proveniens — hvilken kilde som leverte payloaden (#74 explainability).",
            "properties": {
              "system": {
                "type": "string",
                "enum": [
                  "brreg"
                ],
                "example": "brreg"
              },
              "fetchedAt": {
                "type": "string",
                "format": "date-time",
                "description": "Tidspunkt da rå-payloaden ble hentet fra upstream (ISO-8601).",
                "example": "2026-05-04T08:30:00.000Z"
              }
            }
          }
        },
        "example": {
          "companyKey": "NO:974760673",
          "country": "NO",
          "identifiers": {
            "country": "NO",
            "orgnr": "974760673"
          },
          "legalName": "STATENS VEGVESEN",
          "status": "active",
          "organizationForm": {
            "code": "ORGL",
            "description": "Organisasjonsledd"
          },
          "industryCode": {
            "code": "84.130",
            "description": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
          },
          "address": {
            "street": "Postboks 1010 Nordre Ål",
            "postalCode": "2605",
            "city": "LILLEHAMMER",
            "municipality": "LILLEHAMMER",
            "municipalityCode": "3405",
            "country": "NO"
          },
          "foundedDate": "1864-07-01",
          "registrationDate": "1995-08-09",
          "employeeCount": 7500,
          "updatedAt": "2026-05-04T08:30:00.000Z",
          "source": {
            "system": "brreg",
            "fetchedAt": "2026-05-04T08:30:00.000Z"
          }
        }
      },
      "ConnectorBrregSokResultat": {
        "type": "object",
        "title": "ConnectorBrregSokResultat",
        "additionalProperties": false,
        "description": "Paginert treffliste fra fritekstsøk mot Enhetsregisteret. Hvert treff er en\nfull `ConnectorBrregEnhet`.\n",
        "required": [
          "enheter",
          "total",
          "totalElements",
          "totalPages",
          "pageNumber",
          "pageSize"
        ],
        "properties": {
          "enheter": {
            "type": "array",
            "description": "Trefflisten for gjeldende side.",
            "items": {
              "type": "object",
              "title": "ConnectorBrregEnhet",
              "additionalProperties": false,
              "description": "Normalisert enhet fra Enhetsregisteret (Brreg), slik connector-ruten\n`/api/connectors/brreg/{orgnr}` serverer den. Kilde-agnostiske felt-navn\n(`legalName`, `organizationForm`) — den interne #1119-Normalized-formen.\n",
              "required": [
                "companyKey",
                "country",
                "identifiers",
                "legalName",
                "status",
                "updatedAt",
                "source"
              ],
              "properties": {
                "companyKey": {
                  "type": "string",
                  "description": "Intern, stabil entitetsnøkkel (`NO:<orgnr>`).",
                  "example": "NO:974760673"
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "NO"
                  ],
                  "description": "ISO 3166-1 alpha-2-landkode for registeret. Brreg er alltid `NO`.",
                  "example": "NO"
                },
                "identifiers": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "country",
                    "orgnr"
                  ],
                  "description": "Nasjonal identifikator for enheten.",
                  "properties": {
                    "country": {
                      "type": "string",
                      "enum": [
                        "NO"
                      ]
                    },
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Norsk organisasjonsnummer (9 siffer).",
                      "example": "974760673"
                    }
                  }
                },
                "legalName": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Registrert foretaksnavn.",
                  "example": "STATENS VEGVESEN"
                },
                "status": {
                  "type": "string",
                  "description": "Aggregert status-streng utledet fra Brreg-flagg (f.eks. `active`,\n`bankrupt`, `under-liquidation`).\n",
                  "example": "active"
                },
                "organizationForm": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "code",
                    "description"
                  ],
                  "description": "Organisasjonsform per Brreg-kodeverk.",
                  "properties": {
                    "code": {
                      "type": "string",
                      "example": "ORGL"
                    },
                    "description": {
                      "type": "string",
                      "example": "Organisasjonsledd"
                    }
                  }
                },
                "industryCode": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "code",
                    "description"
                  ],
                  "description": "Primær næringskode (NACE).",
                  "properties": {
                    "code": {
                      "type": "string",
                      "example": "84.130"
                    },
                    "description": {
                      "type": "string",
                      "example": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
                    }
                  }
                },
                "address": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Forretningsadresse (alle delfelt er valgfrie).",
                  "properties": {
                    "street": {
                      "type": "string",
                      "example": "Postboks 1010 Nordre Ål"
                    },
                    "postalCode": {
                      "type": "string",
                      "example": "2605"
                    },
                    "city": {
                      "type": "string",
                      "example": "LILLEHAMMER"
                    },
                    "municipality": {
                      "type": "string",
                      "example": "LILLEHAMMER"
                    },
                    "municipalityCode": {
                      "type": "string",
                      "example": "3405"
                    },
                    "country": {
                      "type": "string",
                      "example": "NO"
                    }
                  }
                },
                "foundedDate": {
                  "type": "string",
                  "description": "Stiftelsesdato (ISO-8601 `YYYY-MM-DD`).",
                  "example": "1864-07-01"
                },
                "registrationDate": {
                  "type": "string",
                  "description": "Registreringsdato i Enhetsregisteret (ISO-8601 `YYYY-MM-DD`).",
                  "example": "1995-08-09"
                },
                "employeeCount": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Antall ansatte fra siste Brreg-snapshot.",
                  "example": 7500
                },
                "updatedAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Tidspunkt da enheten sist ble normalisert (ISO-8601).",
                  "example": "2026-05-04T08:30:00.000Z"
                },
                "source": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "system",
                    "fetchedAt"
                  ],
                  "description": "Proveniens — hvilken kilde som leverte payloaden (#74 explainability).",
                  "properties": {
                    "system": {
                      "type": "string",
                      "enum": [
                        "brreg"
                      ],
                      "example": "brreg"
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Tidspunkt da rå-payloaden ble hentet fra upstream (ISO-8601).",
                      "example": "2026-05-04T08:30:00.000Z"
                    }
                  }
                }
              },
              "example": {
                "companyKey": "NO:974760673",
                "country": "NO",
                "identifiers": {
                  "country": "NO",
                  "orgnr": "974760673"
                },
                "legalName": "STATENS VEGVESEN",
                "status": "active",
                "organizationForm": {
                  "code": "ORGL",
                  "description": "Organisasjonsledd"
                },
                "industryCode": {
                  "code": "84.130",
                  "description": "Offentlig administrasjon tilknyttet næringsvirksomhet og arbeidsmarked"
                },
                "address": {
                  "street": "Postboks 1010 Nordre Ål",
                  "postalCode": "2605",
                  "city": "LILLEHAMMER",
                  "municipality": "LILLEHAMMER",
                  "municipalityCode": "3405",
                  "country": "NO"
                },
                "foundedDate": "1864-07-01",
                "registrationDate": "1995-08-09",
                "employeeCount": 7500,
                "updatedAt": "2026-05-04T08:30:00.000Z",
                "source": {
                  "system": "brreg",
                  "fetchedAt": "2026-05-04T08:30:00.000Z"
                }
              }
            }
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Kanonisk totalantall treff på tvers av alle sider.",
            "example": 42
          },
          "totalElements": {
            "type": "integer",
            "minimum": 0,
            "description": "Brreg-upstream totalantall (speiler `total`, beholdt for kompatibilitet).",
            "example": 42
          },
          "totalPages": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall sider gitt `pageSize`.",
            "example": 3
          },
          "pageNumber": {
            "type": "integer",
            "minimum": 0,
            "description": "0-indeksert sidenummer for dette resultatet.",
            "example": 0
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "Antall treff per side.",
            "example": 20
          }
        },
        "example": {
          "total": 1,
          "totalElements": 1,
          "totalPages": 1,
          "pageNumber": 0,
          "pageSize": 20,
          "enheter": [
            {
              "companyKey": "NO:974760673",
              "country": "NO",
              "identifiers": {
                "country": "NO",
                "orgnr": "974760673"
              },
              "legalName": "STATENS VEGVESEN",
              "status": "active",
              "updatedAt": "2026-05-04T08:30:00.000Z",
              "source": {
                "system": "brreg",
                "fetchedAt": "2026-05-04T08:30:00.000Z"
              }
            }
          ]
        }
      },
      "ConnectorBrregRoller": {
        "type": "object",
        "title": "ConnectorBrregRoller",
        "additionalProperties": false,
        "description": "Rollegrupper (styre, daglig leder, revisor m.fl.) for én enhet, med\nrolleinnehavere som enten er personer eller andre enheter.\n",
        "required": [
          "organisasjonsnummer",
          "rollegrupper",
          "harAutorisertData"
        ],
        "properties": {
          "organisasjonsnummer": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummeret rollene gjelder for.",
            "example": "974760673"
          },
          "harAutorisertData": {
            "type": "boolean",
            "description": "`true` hvis svaret inkluderer data fra det autoriserte rolle-API-et\n(krever Maskinporten); ellers er det den åpne delmengden.\n",
            "example": false
          },
          "rollegrupper": {
            "type": "array",
            "description": "Rollegrupper gruppert etter type (f.eks. styre, kontaktperson).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "typeKode",
                "typeBeskrivelse",
                "sisteEndringsDato",
                "roller"
              ],
              "properties": {
                "typeKode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Kode for rollegruppetypen.",
                  "example": "STYR"
                },
                "typeBeskrivelse": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Lesbar beskrivelse av rollegruppetypen.",
                  "example": "Styre"
                },
                "sisteEndringsDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Siste endringsdato for gruppen (ISO-8601 `YYYY-MM-DD`).",
                  "example": "2024-03-12"
                },
                "roller": {
                  "type": "array",
                  "description": "Rolleinnehavere i gruppen.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "person",
                      "enhet",
                      "fratraadt",
                      "rekkefolge",
                      "inntredelsesdato",
                      "fratredelsesdato"
                    ],
                    "properties": {
                      "person": {
                        "description": "Personen som innehar rollen, eller `null` hvis rollen innehas av en enhet.",
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "navn",
                              "fodselsdato",
                              "fodselsnummer",
                              "erDoed"
                            ],
                            "properties": {
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "Ola Nordmann"
                              },
                              "fodselsdato": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Fødselsdato (ISO-8601 `YYYY-MM-DD`) når tilgjengelig.",
                                "example": "1970-01-01"
                              },
                              "fodselsnummer": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Fødselsnummer — kun fra autorisert API, ellers `null`."
                              },
                              "erDoed": {
                                "type": "boolean",
                                "example": false
                              }
                            }
                          }
                        ]
                      },
                      "enhet": {
                        "description": "Enheten som innehar rollen, eller `null` hvis rollen innehas av en person.",
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "organisasjonsnummer",
                              "navn"
                            ],
                            "properties": {
                              "organisasjonsnummer": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "pattern": "^\\d{9}$",
                                "example": "912345678"
                              },
                              "navn": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "example": "REVISJON AS"
                              }
                            }
                          }
                        ]
                      },
                      "fratraadt": {
                        "type": "boolean",
                        "description": "`true` hvis rolleinnehaveren har fratrådt.",
                        "example": false
                      },
                      "rekkefolge": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "description": "Rekkefølge innen rollegruppen.",
                        "example": 1
                      },
                      "inntredelsesdato": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Dato for tiltreden (ISO-8601 `YYYY-MM-DD`).",
                        "example": "2024-03-12"
                      },
                      "fratredelsesdato": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Dato for fratreden (ISO-8601 `YYYY-MM-DD`), `null` hvis aktiv.",
                        "example": null
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "organisasjonsnummer": "974760673",
          "harAutorisertData": false,
          "rollegrupper": [
            {
              "typeKode": "STYR",
              "typeBeskrivelse": "Styre",
              "sisteEndringsDato": "2024-03-12",
              "roller": [
                {
                  "person": {
                    "navn": "Ola Nordmann",
                    "fodselsdato": "1970-01-01",
                    "fodselsnummer": null,
                    "erDoed": false
                  },
                  "enhet": null,
                  "fratraadt": false,
                  "rekkefolge": 1,
                  "inntredelsesdato": "2024-03-12",
                  "fratredelsesdato": null
                }
              ]
            }
          ]
        }
      },
      "ConnectorNavGrunnbelopCurrent": {
        "type": "object",
        "title": "ConnectorNavGrunnbelopCurrent",
        "additionalProperties": false,
        "description": "Gjeldende grunnbeløp (G) og engangsstønad fra NAV (g.nav.no). Ved upstream-\nutilgjengelighet returneres siste kjente verdi med `source: \"fallback\"`.\n",
        "required": [
          "grunnbelop",
          "engangsstonad"
        ],
        "properties": {
          "grunnbelop": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "dato",
              "grunnbeloep",
              "grunnbeloepPerMaaned",
              "gjennomsnittligAarligGrunnbeloep",
              "omregningsfaktor"
            ],
            "description": "Grunnbeløpet (G) slik NAV oppgir det.",
            "properties": {
              "dato": {
                "type": "string",
                "description": "Ikrafttredelsesdato for satsen (ISO-8601 `YYYY-MM-DD`).",
                "example": "2025-05-01"
              },
              "grunnbeloep": {
                "type": "number",
                "description": "Årlig grunnbeløp i kroner.",
                "example": 130160
              },
              "grunnbeloepPerMaaned": {
                "type": "number",
                "description": "Grunnbeløp per måned i kroner.",
                "example": 10847
              },
              "gjennomsnittligAarligGrunnbeloep": {
                "type": "number",
                "description": "Gjennomsnittlig årlig grunnbeløp i kroner.",
                "example": 124028
              },
              "omregningsfaktor": {
                "type": "number",
                "description": "Omregningsfaktor mot forrige sats.",
                "example": 1.046
              }
            }
          },
          "engangsstonad": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fom",
              "tom",
              "verdi"
            ],
            "description": "Engangsstønad ved fødsel/adopsjon.",
            "properties": {
              "fom": {
                "type": "string",
                "description": "Gyldig fra og med (ISO-8601 `YYYY-MM-DD`).",
                "example": "2023-01-01"
              },
              "tom": {
                "type": "string",
                "description": "Gyldig til og med (ISO-8601 `YYYY-MM-DD`).",
                "example": "2122-08-08"
              },
              "verdi": {
                "type": "number",
                "description": "Engangsstønadens beløp i kroner.",
                "example": 92648
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "fallback"
            ],
            "description": "Til stede kun når svaret er en statisk fallback fordi NAV-API-et var\nutilgjengelig. Mangler ved ferske/cachede live-verdier.\n",
            "example": "fallback"
          },
          "note": {
            "type": "string",
            "description": "Forklarende merknad som følger `source: \"fallback\"`.\n"
          }
        },
        "example": {
          "grunnbelop": {
            "dato": "2025-05-01",
            "grunnbeloep": 130160,
            "grunnbeloepPerMaaned": 10847,
            "gjennomsnittligAarligGrunnbeloep": 124028,
            "omregningsfaktor": 1.046
          },
          "engangsstonad": {
            "fom": "2023-01-01",
            "tom": "2122-08-08",
            "verdi": 92648
          }
        }
      },
      "ConnectorCvrCompany": {
        "type": "object",
        "title": "ConnectorCvrCompany",
        "additionalProperties": false,
        "description": "Normalisert virksomhet fra det danske CVR-registeret. Kilde-agnostiske\nengelske feltnavn (den interne #1119-Normalized-formen).\n",
        "required": [
          "company",
          "source"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "cvr"
            ],
            "description": "Proveniens — kilden som leverte payloaden (#74 explainability).",
            "example": "cvr"
          },
          "company": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "companyKey",
              "identifiers",
              "legalName",
              "status",
              "address",
              "updatedAt",
              "source"
            ],
            "properties": {
              "companyKey": {
                "type": "string",
                "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
                "example": "DK:25052943"
              },
              "identifiers": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "country",
                  "cvr"
                ],
                "properties": {
                  "country": {
                    "type": "string",
                    "enum": [
                      "DK"
                    ]
                  },
                  "cvr": {
                    "type": "string",
                    "description": "Dansk CVR-nummer.",
                    "example": "25052943"
                  }
                }
              },
              "legalName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Registrert virksomhetsnavn (null hvis ukjent upstream).",
                "example": "MAERSK A/S"
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Virksomhetsstatus fra CVR (null hvis ukjent).",
                "example": "NORMAL"
              },
              "address": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "country"
                ],
                "description": "Adresse (delfelter kan være null).",
                "properties": {
                  "street": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "Esplanaden 50"
                  },
                  "postalCode": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "1263"
                  },
                  "city": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "København K"
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "DK"
                    ]
                  }
                }
              },
              "updatedAt": {
                "type": "integer",
                "description": "Tidspunkt da dokumentet sist ble normalisert (epoch-millisekund).",
                "example": 1746345000000
              },
              "source": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "system",
                  "fetchedAt",
                  "upstreamUpdatedAt"
                ],
                "properties": {
                  "system": {
                    "type": "string",
                    "enum": [
                      "cvr"
                    ]
                  },
                  "fetchedAt": {
                    "type": "integer",
                    "description": "Tidspunkt da rå-payloaden ble hentet upstream (epoch-millisekund).",
                    "example": 1746345000000
                  },
                  "upstreamUpdatedAt": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Upstream-oppdateringstidspunkt hvis oppgitt (ellers null).",
                    "example": "2026-04-01"
                  }
                }
              }
            }
          }
        },
        "example": {
          "source": "cvr",
          "company": {
            "companyKey": "DK:25052943",
            "identifiers": {
              "country": "DK",
              "cvr": "25052943"
            },
            "legalName": "MAERSK A/S",
            "status": "NORMAL",
            "address": {
              "street": "Esplanaden 50",
              "postalCode": "1263",
              "city": "København K",
              "country": "DK"
            },
            "updatedAt": 1746345000000,
            "source": {
              "system": "cvr",
              "fetchedAt": 1746345000000,
              "upstreamUpdatedAt": "2026-04-01"
            }
          }
        }
      },
      "ConnectorFinanstilsynetKonsesjon": {
        "title": "ConnectorFinanstilsynetKonsesjon",
        "description": "Konsesjons-respons fra Finanstilsynet. `?orgnr=` gir ett direkte oppslag;\n`?navn=` gir et paginert søketreff. `source` er alltid `\"finanstilsynet\"`.\n",
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "description": "Direkte oppslag på organisasjonsnummer.",
            "required": [
              "konsesjonshaver",
              "source"
            ],
            "properties": {
              "konsesjonshaver": {
                "type": "object",
                "title": "ConnectorFinanstilsynetKonsesjonshaver",
                "additionalProperties": false,
                "description": "Konsesjonshaver under tilsyn av Finanstilsynet, med konsesjonene foretaket innehar.",
                "required": [
                  "orgnr",
                  "konsesjoner"
                ],
                "properties": {
                  "orgnr": {
                    "type": "string",
                    "pattern": "^\\d{9}$",
                    "description": "Norsk organisasjonsnummer (9 siffer).",
                    "example": "923609016"
                  },
                  "navn": {
                    "type": "string",
                    "description": "Foretaksnavn.",
                    "example": "EQUINOR ASA"
                  },
                  "organisasjonsform": {
                    "type": "string",
                    "example": "ASA"
                  },
                  "forretningsadresse": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Forretningsadresse (alle delfelter er valgfrie).",
                    "properties": {
                      "adresse": {
                        "type": "string",
                        "example": "Forusbeen 50"
                      },
                      "postnummer": {
                        "type": "string",
                        "example": "4035"
                      },
                      "poststed": {
                        "type": "string",
                        "example": "STAVANGER"
                      },
                      "land": {
                        "type": "string",
                        "example": "Norge"
                      }
                    }
                  },
                  "konsesjoner": {
                    "type": "array",
                    "description": "Konsesjonene foretaket innehar (kan være tom).",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "type"
                      ],
                      "properties": {
                        "type": {
                          "type": "string",
                          "description": "Konsesjonstype (Finanstilsynets kodeverk).",
                          "example": "forsikringsformidling"
                        },
                        "beskrivelse": {
                          "type": "string",
                          "description": "Fritekst-beskrivelse av tillatelsen.",
                          "example": "Forsikringsformidling"
                        },
                        "tildelt": {
                          "type": "string",
                          "description": "Tildelt-dato (ISO-8601 `YYYY-MM-DD`).",
                          "example": "2010-01-01"
                        },
                        "bortfalt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Bortfalt-dato (ISO-8601), eller null hvis fortsatt aktiv.",
                          "example": null
                        },
                        "vedtaksnr": {
                          "type": "string",
                          "description": "Internt vedtaksnummer hos Finanstilsynet.",
                          "example": "12/3456"
                        }
                      }
                    }
                  },
                  "sistOppdatert": {
                    "type": "string",
                    "description": "Tidspunkt for siste oppdatering hos Finanstilsynet (ISO-8601).",
                    "example": "2026-05-01"
                  }
                },
                "example": {
                  "orgnr": "923609016",
                  "navn": "EQUINOR ASA",
                  "organisasjonsform": "ASA",
                  "forretningsadresse": {
                    "adresse": "Forusbeen 50",
                    "postnummer": "4035",
                    "poststed": "STAVANGER",
                    "land": "Norge"
                  },
                  "konsesjoner": [
                    {
                      "type": "forsikringsformidling",
                      "beskrivelse": "Forsikringsformidling",
                      "tildelt": "2010-01-01",
                      "bortfalt": null,
                      "vedtaksnr": "12/3456"
                    }
                  ],
                  "sistOppdatert": "2026-05-01"
                }
              },
              "source": {
                "type": "string",
                "enum": [
                  "finanstilsynet"
                ]
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "Paginert søketreff på navn.",
            "required": [
              "treff",
              "source"
            ],
            "properties": {
              "totalt": {
                "type": "integer",
                "minimum": 0,
                "description": "Totalt antall treff (hvis upstream oppgir det).",
                "example": 12
              },
              "treff": {
                "type": "array",
                "description": "Konsesjonshavere som matcher søket (siden).",
                "items": {
                  "type": "object",
                  "title": "ConnectorFinanstilsynetKonsesjonshaver",
                  "additionalProperties": false,
                  "description": "Konsesjonshaver under tilsyn av Finanstilsynet, med konsesjonene foretaket innehar.",
                  "required": [
                    "orgnr",
                    "konsesjoner"
                  ],
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "pattern": "^\\d{9}$",
                      "description": "Norsk organisasjonsnummer (9 siffer).",
                      "example": "923609016"
                    },
                    "navn": {
                      "type": "string",
                      "description": "Foretaksnavn.",
                      "example": "EQUINOR ASA"
                    },
                    "organisasjonsform": {
                      "type": "string",
                      "example": "ASA"
                    },
                    "forretningsadresse": {
                      "type": "object",
                      "additionalProperties": false,
                      "description": "Forretningsadresse (alle delfelter er valgfrie).",
                      "properties": {
                        "adresse": {
                          "type": "string",
                          "example": "Forusbeen 50"
                        },
                        "postnummer": {
                          "type": "string",
                          "example": "4035"
                        },
                        "poststed": {
                          "type": "string",
                          "example": "STAVANGER"
                        },
                        "land": {
                          "type": "string",
                          "example": "Norge"
                        }
                      }
                    },
                    "konsesjoner": {
                      "type": "array",
                      "description": "Konsesjonene foretaket innehar (kan være tom).",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Konsesjonstype (Finanstilsynets kodeverk).",
                            "example": "forsikringsformidling"
                          },
                          "beskrivelse": {
                            "type": "string",
                            "description": "Fritekst-beskrivelse av tillatelsen.",
                            "example": "Forsikringsformidling"
                          },
                          "tildelt": {
                            "type": "string",
                            "description": "Tildelt-dato (ISO-8601 `YYYY-MM-DD`).",
                            "example": "2010-01-01"
                          },
                          "bortfalt": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Bortfalt-dato (ISO-8601), eller null hvis fortsatt aktiv.",
                            "example": null
                          },
                          "vedtaksnr": {
                            "type": "string",
                            "description": "Internt vedtaksnummer hos Finanstilsynet.",
                            "example": "12/3456"
                          }
                        }
                      }
                    },
                    "sistOppdatert": {
                      "type": "string",
                      "description": "Tidspunkt for siste oppdatering hos Finanstilsynet (ISO-8601).",
                      "example": "2026-05-01"
                    }
                  },
                  "example": {
                    "orgnr": "923609016",
                    "navn": "EQUINOR ASA",
                    "organisasjonsform": "ASA",
                    "forretningsadresse": {
                      "adresse": "Forusbeen 50",
                      "postnummer": "4035",
                      "poststed": "STAVANGER",
                      "land": "Norge"
                    },
                    "konsesjoner": [
                      {
                        "type": "forsikringsformidling",
                        "beskrivelse": "Forsikringsformidling",
                        "tildelt": "2010-01-01",
                        "bortfalt": null,
                        "vedtaksnr": "12/3456"
                      }
                    ],
                    "sistOppdatert": "2026-05-01"
                  }
                }
              },
              "next": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Markør for neste side, eller null."
              },
              "forrige": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Markør for forrige side, eller null."
              },
              "source": {
                "type": "string",
                "enum": [
                  "finanstilsynet"
                ]
              }
            }
          }
        ],
        "example": {
          "source": "finanstilsynet",
          "konsesjonshaver": {
            "orgnr": "923609016",
            "navn": "EQUINOR ASA",
            "organisasjonsform": "ASA",
            "konsesjoner": [
              {
                "type": "forsikringsformidling",
                "beskrivelse": "Forsikringsformidling",
                "tildelt": "2010-01-01",
                "bortfalt": null
              }
            ]
          }
        }
      },
      "ConnectorFinanstilsynetKonsesjonshaver": {
        "type": "object",
        "title": "ConnectorFinanstilsynetKonsesjonshaver",
        "additionalProperties": false,
        "description": "Konsesjonshaver under tilsyn av Finanstilsynet, med konsesjonene foretaket innehar.",
        "required": [
          "orgnr",
          "konsesjoner"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "example": "923609016"
          },
          "navn": {
            "type": "string",
            "description": "Foretaksnavn.",
            "example": "EQUINOR ASA"
          },
          "organisasjonsform": {
            "type": "string",
            "example": "ASA"
          },
          "forretningsadresse": {
            "type": "object",
            "additionalProperties": false,
            "description": "Forretningsadresse (alle delfelter er valgfrie).",
            "properties": {
              "adresse": {
                "type": "string",
                "example": "Forusbeen 50"
              },
              "postnummer": {
                "type": "string",
                "example": "4035"
              },
              "poststed": {
                "type": "string",
                "example": "STAVANGER"
              },
              "land": {
                "type": "string",
                "example": "Norge"
              }
            }
          },
          "konsesjoner": {
            "type": "array",
            "description": "Konsesjonene foretaket innehar (kan være tom).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "description": "Konsesjonstype (Finanstilsynets kodeverk).",
                  "example": "forsikringsformidling"
                },
                "beskrivelse": {
                  "type": "string",
                  "description": "Fritekst-beskrivelse av tillatelsen.",
                  "example": "Forsikringsformidling"
                },
                "tildelt": {
                  "type": "string",
                  "description": "Tildelt-dato (ISO-8601 `YYYY-MM-DD`).",
                  "example": "2010-01-01"
                },
                "bortfalt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Bortfalt-dato (ISO-8601), eller null hvis fortsatt aktiv.",
                  "example": null
                },
                "vedtaksnr": {
                  "type": "string",
                  "description": "Internt vedtaksnummer hos Finanstilsynet.",
                  "example": "12/3456"
                }
              }
            }
          },
          "sistOppdatert": {
            "type": "string",
            "description": "Tidspunkt for siste oppdatering hos Finanstilsynet (ISO-8601).",
            "example": "2026-05-01"
          }
        },
        "example": {
          "orgnr": "923609016",
          "navn": "EQUINOR ASA",
          "organisasjonsform": "ASA",
          "forretningsadresse": {
            "adresse": "Forusbeen 50",
            "postnummer": "4035",
            "poststed": "STAVANGER",
            "land": "Norge"
          },
          "konsesjoner": [
            {
              "type": "forsikringsformidling",
              "beskrivelse": "Forsikringsformidling",
              "tildelt": "2010-01-01",
              "bortfalt": null,
              "vedtaksnr": "12/3456"
            }
          ],
          "sistOppdatert": "2026-05-01"
        }
      },
      "ConnectorNavGrunnbelop": {
        "type": "object",
        "title": "ConnectorNavGrunnbelop",
        "additionalProperties": false,
        "description": "Ett grunnbeløp (G) gyldig fra en gitt dato.",
        "required": [
          "dato",
          "grunnbeloep",
          "grunnbeloepPerMaaned",
          "gjennomsnittligAarligGrunnbeloep",
          "omregningsfaktor"
        ],
        "properties": {
          "dato": {
            "type": "string",
            "description": "Ikrafttredelsesdato for satsen (ISO-8601 `YYYY-MM-DD`).",
            "example": "2025-05-01"
          },
          "grunnbeloep": {
            "type": "number",
            "description": "Årlig grunnbeløp i kroner.",
            "example": 130160
          },
          "grunnbeloepPerMaaned": {
            "type": "number",
            "description": "Grunnbeløp per måned i kroner.",
            "example": 10847
          },
          "gjennomsnittligAarligGrunnbeloep": {
            "type": "number",
            "description": "Gjennomsnittlig årlig grunnbeløp i kroner.",
            "example": 124028
          },
          "omregningsfaktor": {
            "type": "number",
            "description": "Omregningsfaktor mot forrige sats.",
            "example": 1.046
          }
        },
        "example": {
          "dato": "2025-05-01",
          "grunnbeloep": 130160,
          "grunnbeloepPerMaaned": 10847,
          "gjennomsnittligAarligGrunnbeloep": 124028,
          "omregningsfaktor": 1.046
        }
      },
      "ConnectorNavGrunnbelopHistorikk": {
        "type": "array",
        "title": "ConnectorNavGrunnbelopHistorikk",
        "description": "Liste av historiske grunnbeløp (G), sortert kronologisk.",
        "items": {
          "type": "object",
          "title": "ConnectorNavGrunnbelop",
          "additionalProperties": false,
          "description": "Ett grunnbeløp (G) gyldig fra en gitt dato.",
          "required": [
            "dato",
            "grunnbeloep",
            "grunnbeloepPerMaaned",
            "gjennomsnittligAarligGrunnbeloep",
            "omregningsfaktor"
          ],
          "properties": {
            "dato": {
              "type": "string",
              "description": "Ikrafttredelsesdato for satsen (ISO-8601 `YYYY-MM-DD`).",
              "example": "2025-05-01"
            },
            "grunnbeloep": {
              "type": "number",
              "description": "Årlig grunnbeløp i kroner.",
              "example": 130160
            },
            "grunnbeloepPerMaaned": {
              "type": "number",
              "description": "Grunnbeløp per måned i kroner.",
              "example": 10847
            },
            "gjennomsnittligAarligGrunnbeloep": {
              "type": "number",
              "description": "Gjennomsnittlig årlig grunnbeløp i kroner.",
              "example": 124028
            },
            "omregningsfaktor": {
              "type": "number",
              "description": "Omregningsfaktor mot forrige sats.",
              "example": 1.046
            }
          },
          "example": {
            "dato": "2025-05-01",
            "grunnbeloep": 130160,
            "grunnbeloepPerMaaned": 10847,
            "gjennomsnittligAarligGrunnbeloep": 124028,
            "omregningsfaktor": 1.046
          }
        },
        "example": [
          {
            "dato": "2024-05-01",
            "grunnbeloep": 124028,
            "grunnbeloepPerMaaned": 10336,
            "gjennomsnittligAarligGrunnbeloep": 118620,
            "omregningsfaktor": 1.0455
          },
          {
            "dato": "2025-05-01",
            "grunnbeloep": 130160,
            "grunnbeloepPerMaaned": 10847,
            "gjennomsnittligAarligGrunnbeloep": 124028,
            "omregningsfaktor": 1.046
          }
        ]
      },
      "ConnectorBolagsverketArendestatus": {
        "type": "object",
        "title": "ConnectorBolagsverketArendestatus",
        "additionalProperties": false,
        "description": "Status på årsredovisnings-ärenden for en svensk virksomhet hos Bolagsverket,\nmed normalisert selskaps-dokument og hendelser.\n",
        "required": [
          "company",
          "events",
          "source"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "bolagsverket"
            ],
            "description": "Proveniens — kilden som leverte payloaden (#74 explainability).",
            "example": "bolagsverket"
          },
          "company": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "companyKey",
              "identifiers",
              "legalName",
              "arendeCount",
              "latestStatus",
              "latestStatusAt",
              "updatedAt",
              "source"
            ],
            "properties": {
              "companyKey": {
                "type": "string",
                "description": "Intern, stabil entitetsnøkkel (`SE:<orgnr>`).",
                "example": "SE:5560360793"
              },
              "identifiers": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "country",
                  "orgnr"
                ],
                "properties": {
                  "country": {
                    "type": "string",
                    "enum": [
                      "SE"
                    ]
                  },
                  "orgnr": {
                    "type": "string",
                    "description": "Svensk organisationsnummer.",
                    "example": "5560360793"
                  }
                }
              },
              "legalName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Virksomhetsnavn (null hvis ukjent upstream).",
                "example": "Volvo AB"
              },
              "arendeCount": {
                "type": "integer",
                "minimum": 0,
                "description": "Antall årsredovisnings-ärenden registrert.",
                "example": 3
              },
              "latestStatus": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Status på nyeste ärende (null hvis ingen).",
                "example": "Registrerad"
              },
              "latestStatusAt": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Tidspunkt for nyeste status (ISO-8601), eller null.",
                "example": "2025-07-01"
              },
              "updatedAt": {
                "type": "integer",
                "description": "Tidspunkt da dokumentet sist ble normalisert (epoch-millisekund).",
                "example": 1746345000000
              },
              "source": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "system",
                  "fetchedAt"
                ],
                "properties": {
                  "system": {
                    "type": "string",
                    "enum": [
                      "bolagsverket"
                    ]
                  },
                  "fetchedAt": {
                    "type": "integer",
                    "description": "Tidspunkt da rå-payloaden ble hentet upstream (epoch-millisekund).",
                    "example": 1746345000000
                  }
                }
              }
            }
          },
          "events": {
            "type": "array",
            "description": "Normaliserte årsredovisnings-status-hendelser.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "eventId",
                "companyKey",
                "source",
                "eventType",
                "occurredAt",
                "upstreamId",
                "status",
                "arendetyp",
                "rakenskapsar",
                "fetchedAt"
              ],
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "Stabil, deterministisk hendelses-ID.",
                  "example": "SE:5560360793:2024"
                },
                "companyKey": {
                  "type": "string",
                  "example": "SE:5560360793"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "bolagsverket"
                  ]
                },
                "eventType": {
                  "type": "string",
                  "enum": [
                    "annual_report_status"
                  ]
                },
                "occurredAt": {
                  "type": "string",
                  "description": "Tidspunkt hendelsen inntraff (ISO-8601).",
                  "example": "2025-07-01"
                },
                "upstreamId": {
                  "type": "string",
                  "description": "Upstream-ärende-identifikator.",
                  "example": "2024"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Registrerad"
                },
                "arendetyp": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Årsredovisning"
                },
                "rakenskapsar": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Räkenskapsår ärendet gjelder.",
                  "example": "2024"
                },
                "fetchedAt": {
                  "type": "integer",
                  "description": "Tidspunkt da payloaden ble hentet upstream (epoch-millisekund).",
                  "example": 1746345000000
                }
              }
            }
          }
        },
        "example": {
          "source": "bolagsverket",
          "company": {
            "companyKey": "SE:5560360793",
            "identifiers": {
              "country": "SE",
              "orgnr": "5560360793"
            },
            "legalName": "Volvo AB",
            "arendeCount": 3,
            "latestStatus": "Registrerad",
            "latestStatusAt": "2025-07-01",
            "updatedAt": 1746345000000,
            "source": {
              "system": "bolagsverket",
              "fetchedAt": 1746345000000
            }
          },
          "events": [
            {
              "eventId": "SE:5560360793:2024",
              "companyKey": "SE:5560360793",
              "source": "bolagsverket",
              "eventType": "annual_report_status",
              "occurredAt": "2025-07-01",
              "upstreamId": "2024",
              "status": "Registrerad",
              "arendetyp": "Årsredovisning",
              "rakenskapsar": "2024",
              "fetchedAt": 1746345000000
            }
          ]
        }
      },
      "ConnectorCvrEjerforhold": {
        "type": "object",
        "title": "ConnectorCvrEjerforhold",
        "additionalProperties": false,
        "description": "Reelle/registrerte eiere for en dansk virksomhet (cvrapi.virk.dk).",
        "required": [
          "cvr",
          "companyKey",
          "count",
          "owners"
        ],
        "properties": {
          "cvr": {
            "type": "string",
            "description": "Dansk CVR-nummer.",
            "example": "25052943"
          },
          "companyKey": {
            "type": "string",
            "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
            "example": "DK:25052943"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall eiere i `owners`.",
            "example": 2
          },
          "owners": {
            "type": "array",
            "description": "Eiere (tom hvis upstream ikke eksponerte `owners`-feltet).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "navn",
                "cvr",
                "ejerandel",
                "stemmerett",
                "startDato",
                "rolle"
              ],
              "properties": {
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "A.P. Møller Holding A/S"
                },
                "cvr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Eierens CVR-nummer (null for personer/ukjent).",
                  "example": "12345674"
                },
                "ejerandel": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Eierandel i prosent (null hvis ukjent).",
                  "example": 41.51
                },
                "stemmerett": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Stemmerett i prosent (null hvis ukjent).",
                  "example": 51
                },
                "startDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Eierskapets startdato (ISO-8601), eller null.",
                  "example": "2003-01-01"
                },
                "rolle": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Legal ejer"
                }
              }
            }
          },
          "note": {
            "type": "string",
            "description": "Til stede når `owners` er tom — peker på autoritativt eier-register."
          }
        },
        "example": {
          "cvr": "25052943",
          "companyKey": "DK:25052943",
          "count": 1,
          "owners": [
            {
              "navn": "A.P. Møller Holding A/S",
              "cvr": "12345674",
              "ejerandel": 41.51,
              "stemmerett": 51,
              "startDato": "2003-01-01",
              "rolle": "Legal ejer"
            }
          ]
        }
      },
      "ConnectorCvrDirektoerer": {
        "type": "object",
        "title": "ConnectorCvrDirektoerer",
        "additionalProperties": false,
        "description": "Direktører/ledelse for en dansk virksomhet (cvrapi.virk.dk).",
        "required": [
          "cvr",
          "companyKey",
          "count",
          "directors"
        ],
        "properties": {
          "cvr": {
            "type": "string",
            "description": "Dansk CVR-nummer.",
            "example": "25052943"
          },
          "companyKey": {
            "type": "string",
            "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
            "example": "DK:25052943"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall direktører i `directors`.",
            "example": 1
          },
          "directors": {
            "type": "array",
            "description": "Direktører/ledelse (tom hvis upstream ikke eksponerte `management`).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "navn",
                "cvr",
                "stilling",
                "startDato"
              ],
              "properties": {
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Robert Mærsk Uggla"
                },
                "cvr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Direktørens CVR (null for personer/ukjent).",
                  "example": null
                },
                "stilling": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Adm. direktør"
                },
                "startDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Tiltredelsesdato (ISO-8601), eller null.",
                  "example": "2018-04-01"
                }
              }
            }
          },
          "note": {
            "type": "string",
            "description": "Til stede når `directors` er tom — peker på autoritativ ledelsesinfo."
          }
        },
        "example": {
          "cvr": "25052943",
          "companyKey": "DK:25052943",
          "count": 1,
          "directors": [
            {
              "navn": "Robert Mærsk Uggla",
              "cvr": null,
              "stilling": "Adm. direktør",
              "startDato": "2018-04-01"
            }
          ]
        }
      },
      "ConnectorCvrRegnskaber": {
        "type": "object",
        "title": "ConnectorCvrRegnskaber",
        "additionalProperties": false,
        "description": "Direkte lenker til Erhvervsstyrelsens regnskaps-/virksomhetsportaler for en\ndansk virksomhet. Listing av selve regnskapene krever Datafordeler-tilgang.\n",
        "required": [
          "cvr",
          "companyKey",
          "links",
          "note"
        ],
        "properties": {
          "cvr": {
            "type": "string",
            "description": "Dansk CVR-nummer.",
            "example": "25052943"
          },
          "companyKey": {
            "type": "string",
            "description": "Intern, stabil entitetsnøkkel (`DK:<cvr>`).",
            "example": "DK:25052943"
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "cvr",
              "portalUrl",
              "regnskabPortalUrl",
              "rawDataUrl"
            ],
            "properties": {
              "cvr": {
                "type": "string",
                "example": "25052943"
              },
              "portalUrl": {
                "type": "string",
                "format": "uri",
                "description": "Full virksomhetsside på datacvr.virk.dk.",
                "example": "https://datacvr.virk.dk/enhed/virksomhed/25052943"
              },
              "regnskabPortalUrl": {
                "type": "string",
                "format": "uri",
                "description": "Innleverte XBRL-/PDF-regnskaper.",
                "example": "https://regnskaber.virk.dk/?cvrnummer=25052943"
              },
              "rawDataUrl": {
                "type": "string",
                "format": "uri",
                "description": "Erhvervsstyrelsens åpne data-katalog for innleverte XBRL-regnskaper.",
                "example": "https://datacvr.virk.dk/data/?cvrnummer=25052943"
              }
            }
          },
          "note": {
            "type": "string",
            "description": "Forklaring på hvorfor regnskapene lenkes til i stedet for å listes."
          }
        },
        "example": {
          "cvr": "25052943",
          "companyKey": "DK:25052943",
          "links": {
            "cvr": "25052943",
            "portalUrl": "https://datacvr.virk.dk/enhed/virksomhed/25052943",
            "regnskabPortalUrl": "https://regnskaber.virk.dk/?cvrnummer=25052943",
            "rawDataUrl": "https://datacvr.virk.dk/data/?cvrnummer=25052943"
          },
          "note": "Erhvervsstyrelsens regnskaber er ikke åpent listebart per CVR via cvrapi.virk.dk."
        }
      },
      "ConnectorLuftfartstilsynetAircraft": {
        "type": "object",
        "title": "ConnectorLuftfartstilsynetAircraft",
        "additionalProperties": false,
        "description": "Ett luftfartøy fra Luftfartstilsynets norske luftfartøyregister (NLR).",
        "required": [
          "registration",
          "category",
          "type",
          "manufacturer",
          "serialNumber",
          "yearBuilt",
          "registrationDate",
          "airworthinessCategories",
          "maxTakeoffMassKg",
          "icao24bit",
          "operator",
          "operatorOrgNumber",
          "ownerContactOrgNumber",
          "owners",
          "source"
        ],
        "properties": {
          "registration": {
            "type": "string",
            "description": "Registreringsmerke.",
            "example": "LN-ABA"
          },
          "category": {
            "type": "string",
            "example": "Fly"
          },
          "type": {
            "type": "string",
            "description": "Luftfartøytype/modell.",
            "example": "Cessna 172"
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ],
            "example": "Cessna Aircraft Company"
          },
          "serialNumber": {
            "type": [
              "string",
              "null"
            ],
            "example": "17280001"
          },
          "yearBuilt": {
            "type": [
              "string",
              "null"
            ],
            "example": "1998"
          },
          "registrationDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Registreringsdato i original DD.MM.YYYY-form.",
            "example": "12.05.1998"
          },
          "airworthinessCategories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "Normal"
            ]
          },
          "maxTakeoffMassKg": {
            "type": [
              "number",
              "null"
            ],
            "description": "Maks tillatt startvekt (kg).",
            "example": 1157
          },
          "icao24bit": {
            "description": "ICAO 24-bit-adresse i flere baser, eller null.",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "decimal",
                  "binary",
                  "octal",
                  "hex"
                ],
                "properties": {
                  "decimal": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "4735234"
                  },
                  "binary": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "octal": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "hex": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "478D02"
                  }
                }
              }
            ]
          },
          "operator": {
            "type": [
              "string",
              "null"
            ],
            "example": "Oslo Flyveklubb"
          },
          "operatorOrgNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "Org.nr. for operatør — kan kobles mot brreg-connectoren.",
            "example": "912345678"
          },
          "ownerContactOrgNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "Org.nr. for eier/kontakt — kan kobles mot brreg-connectoren.",
            "example": null
          },
          "owners": {
            "type": "array",
            "description": "Registrerte eiere.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "type",
                "since",
                "name",
                "orgNumber",
                "address",
                "postalCode",
                "postalPlace",
                "country"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "example": "Eier"
                },
                "since": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "01.01.2010"
                },
                "name": {
                  "type": "string",
                  "example": "Oslo Flyveklubb"
                },
                "orgNumber": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Org.nr. (9 siffer) — kan kobles mot brreg-connectoren.",
                  "example": "912345678"
                },
                "address": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Gardermoen"
                },
                "postalCode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2060"
                },
                "postalPlace": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Gardermoen"
                },
                "country": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Norge"
                }
              }
            }
          },
          "source": {
            "type": "string",
            "description": "Proveniens-streng (#74 explainability).",
            "example": "luftfartstilsynet:nlr"
          }
        },
        "example": {
          "registration": "LN-ABA",
          "category": "Fly",
          "type": "Cessna 172",
          "manufacturer": "Cessna Aircraft Company",
          "serialNumber": "17280001",
          "yearBuilt": "1998",
          "registrationDate": "12.05.1998",
          "airworthinessCategories": [
            "Normal"
          ],
          "maxTakeoffMassKg": 1157,
          "icao24bit": {
            "decimal": "4735234",
            "binary": "010001111000110100000010",
            "octal": "21706402",
            "hex": "478D02"
          },
          "operator": "Oslo Flyveklubb",
          "operatorOrgNumber": "912345678",
          "ownerContactOrgNumber": null,
          "owners": [
            {
              "type": "Eier",
              "since": "01.01.2010",
              "name": "Oslo Flyveklubb",
              "orgNumber": "912345678",
              "address": "Gardermoen",
              "postalCode": "2060",
              "postalPlace": "Gardermoen",
              "country": "Norge"
            }
          ],
          "source": "luftfartstilsynet:nlr"
        }
      },
      "ConnectorNavYrkesskadeKodeverk": {
        "type": "object",
        "title": "ConnectorNavYrkesskadeKodeverk",
        "additionalProperties": false,
        "description": "Kodeverdier (kode → verdi) for én yrkesskade-kodeverkstype hos NAV.",
        "required": [
          "typenavn",
          "kodeverdier",
          "source"
        ],
        "properties": {
          "typenavn": {
            "type": "string",
            "description": "Kodeverkstypen oppslaget gjelder.",
            "example": "diagnose"
          },
          "kodeverdier": {
            "type": "array",
            "description": "Kode/verdi-parene for typen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "kode",
                "verdi"
              ],
              "properties": {
                "kode": {
                  "type": "string",
                  "example": "L72"
                },
                "verdi": {
                  "type": "string",
                  "example": "Støyskade"
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "NAV yrkesskade-kodeverkutforsker"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "NAV yrkesskade-kodeverkutforsker"
          }
        },
        "example": {
          "typenavn": "diagnose",
          "kodeverdier": [
            {
              "kode": "L72",
              "verdi": "Støyskade"
            },
            {
              "kode": "H83",
              "verdi": "Larmskade øre"
            }
          ],
          "source": "NAV yrkesskade-kodeverkutforsker"
        }
      },
      "ConnectorHelfoHpr": {
        "type": "object",
        "title": "ConnectorHelfoHpr",
        "additionalProperties": false,
        "description": "Person fra Helsepersonellregisteret (HPR) med autorisasjoner, godkjenninger\nog eventuelle suspensjoner.\n",
        "required": [
          "hprNummer",
          "navn",
          "fornavn",
          "etternavn",
          "autorisasjoner",
          "godkjenninger",
          "suspensjoner"
        ],
        "properties": {
          "hprNummer": {
            "type": [
              "integer",
              "null"
            ],
            "description": "HPR-nummer (null hvis ukjent).",
            "example": 1234567
          },
          "navn": {
            "type": [
              "string",
              "null"
            ],
            "example": "Kari Nordmann"
          },
          "fornavn": {
            "type": [
              "string",
              "null"
            ],
            "example": "Kari"
          },
          "etternavn": {
            "type": [
              "string",
              "null"
            ],
            "example": "Nordmann"
          },
          "autorisasjoner": {
            "type": "array",
            "description": "Autorisasjoner personen innehar.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "helsepersonellkategori",
                "autorisasjonsstatus",
                "gyldigTil"
              ],
              "properties": {
                "helsepersonellkategori": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Lege"
                },
                "autorisasjonsstatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Aktiv"
                },
                "gyldigTil": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Gyldig til-dato (ISO-8601), eller null hvis uten utløp.",
                  "example": null
                }
              }
            }
          },
          "godkjenninger": {
            "type": "array",
            "description": "Spesialitets-godkjenninger.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "spesialitet",
                "gyldigTil"
              ],
              "properties": {
                "spesialitet": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Indremedisin"
                },
                "gyldigTil": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": null
                }
              }
            }
          },
          "suspensjoner": {
            "type": "array",
            "description": "Eventuelle suspensjoner (tom for personell uten suspensjon).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "suspensjonskode",
                "gyldigTil"
              ],
              "properties": {
                "suspensjonskode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "B1"
                },
                "gyldigTil": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2027-01-01"
                }
              }
            }
          }
        },
        "example": {
          "hprNummer": 1234567,
          "navn": "Kari Nordmann",
          "fornavn": "Kari",
          "etternavn": "Nordmann",
          "autorisasjoner": [
            {
              "helsepersonellkategori": "Lege",
              "autorisasjonsstatus": "Aktiv",
              "gyldigTil": null
            }
          ],
          "godkjenninger": [
            {
              "spesialitet": "Indremedisin",
              "gyldigTil": null
            }
          ],
          "suspensjoner": []
        }
      },
      "ConnectorKartverketAdresser": {
        "type": "object",
        "title": "ConnectorKartverketAdresser",
        "additionalProperties": false,
        "description": "Treffliste fra Kartverkets adressesøk (Matrikkelens adresse-API).",
        "required": [
          "adresser",
          "source"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "kartverket"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "kartverket"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "description": "Paginerings-metadata fra Kartverket.",
            "properties": {
              "totaltAntallTreff": {
                "type": "integer",
                "minimum": 0,
                "example": 42
              },
              "side": {
                "type": "integer",
                "minimum": 0,
                "example": 0
              },
              "treffPerSide": {
                "type": "integer",
                "minimum": 0,
                "example": 10
              },
              "asciiKompatibel": {
                "type": "boolean",
                "example": true
              }
            }
          },
          "adresser": {
            "type": "array",
            "description": "Adressetreff (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én adresse. Alle felt er valgfrie — Kartverket utelater det som mangler.",
              "properties": {
                "adresseId": {
                  "type": "string",
                  "pattern": "^\\d{1,12}$",
                  "example": "123456789"
                },
                "adressetekst": {
                  "type": "string",
                  "description": "Sammensatt adresse-tekst.",
                  "example": "Storgata 1, 0151 Oslo"
                },
                "adressenavn": {
                  "type": "string",
                  "description": "Gate-/veg-navn-delen.",
                  "example": "Storgata"
                },
                "nummer": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Husnummer (numerisk del).",
                  "example": 1
                },
                "bokstav": {
                  "type": "string",
                  "description": "Bokstav-suffix på husnummer.",
                  "example": "A"
                },
                "bruksenhetsnummer": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Bruksenhet/bolignummer (oppgang/leilighet).",
                  "example": [
                    "H0101"
                  ]
                },
                "postnummer": {
                  "type": "string",
                  "example": "0151"
                },
                "poststed": {
                  "type": "string",
                  "example": "OSLO"
                },
                "kommunenummer": {
                  "type": "string",
                  "example": "0301"
                },
                "kommunenavn": {
                  "type": "string",
                  "example": "OSLO"
                },
                "fylkesnummer": {
                  "type": "string",
                  "description": "Fylkesnummer (2 siffer).",
                  "example": "03"
                },
                "fylkesnavn": {
                  "type": "string",
                  "example": "Oslo"
                },
                "koordinat": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "lat",
                    "lon"
                  ],
                  "description": "WGS84-koordinat. Mangler for adresser uten matrikkelført punkt.",
                  "properties": {
                    "lat": {
                      "type": "number",
                      "example": 59.9139
                    },
                    "lon": {
                      "type": "number",
                      "example": 10.7522
                    }
                  }
                },
                "representasjonspunkt": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "UTM33-representasjon hvis Kartverket eksponerer den.",
                  "properties": {
                    "epsg": {
                      "type": "string",
                      "example": "EPSG:25833"
                    },
                    "lat": {
                      "type": "number"
                    },
                    "lon": {
                      "type": "number"
                    }
                  }
                },
                "objtype": {
                  "type": "string",
                  "description": "Adressetype — `Vegadresse` (vanligst) eller `Matrikkeladresse`.",
                  "example": "Vegadresse"
                },
                "oppdateringsdato": {
                  "type": "string",
                  "description": "Datostempel siste endring i Matrikkelen (ISO-8601).",
                  "example": "2025-01-15"
                }
              }
            }
          }
        },
        "example": {
          "source": "kartverket",
          "metadata": {
            "totaltAntallTreff": 1,
            "side": 0,
            "treffPerSide": 10,
            "asciiKompatibel": true
          },
          "adresser": [
            {
              "adresseId": "123456789",
              "adressetekst": "Storgata 1, 0151 Oslo",
              "adressenavn": "Storgata",
              "nummer": 1,
              "postnummer": "0151",
              "poststed": "OSLO",
              "kommunenummer": "0301",
              "kommunenavn": "OSLO",
              "koordinat": {
                "lat": 59.9139,
                "lon": 10.7522
              },
              "objtype": "Vegadresse"
            }
          ]
        }
      },
      "ConnectorAvinorStatus": {
        "type": "object",
        "title": "ConnectorAvinorStatus",
        "additionalProperties": false,
        "description": "Gjeldende flystatus-meldinger for én norsk flyplass fra Avinor flightStatuses-feed (nær-sanntid, TTL 5 min). Tom `alerts`-array betyr ingen aktive sanntids-meldinger.",
        "required": [
          "airport",
          "checkedAt",
          "hasActiveAlerts",
          "alerts"
        ],
        "properties": {
          "airport": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "IATA-kode for flyplassen forespørselen gjaldt (alltid store bokstaver).",
            "example": "OSL"
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO-8601-tidspunkt for når dataene ble hentet/cachet. Settes til cache-tidspunktet ved hit/stale, ellers til nåtid ved fersk henting.",
            "example": "2026-06-24T08:15:00.000Z"
          },
          "hasActiveAlerts": {
            "type": "boolean",
            "description": "Avledet flagg — `true` når `alerts`-arrayet har minst ett element.",
            "example": true
          },
          "alerts": {
            "type": "array",
            "description": "Flystatus-meldinger (tom ved ingen aktive meldinger).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én flystatus-melding for en spesifikk flyvning.",
              "required": [
                "flightId",
                "statusCode",
                "statusText",
                "statusTime"
              ],
              "properties": {
                "flightId": {
                  "type": "string",
                  "description": "Flyvningsnummer (alltid ikke-tom — meldinger uten flightId droppes).",
                  "example": "DY602"
                },
                "statusCode": {
                  "type": "string",
                  "description": "Rå statuskode fra Avinor. Kjente koder er A/C/D/E/N; kan være tom streng eller en ukjent kode om feeden mangler/avviker.",
                  "example": "D"
                },
                "statusText": {
                  "type": "string",
                  "description": "Menneskelesbar status. Slås opp fra statuskoden (A=Landed, C=Cancelled, D=Departed, E=New time, N=New flight); faller tilbake til den rå koden hvis den er ukjent.",
                  "example": "Departed"
                },
                "statusTime": {
                  "type": "string",
                  "nullable": true,
                  "format": "date-time",
                  "description": "ISO-8601-tidspunkt for statusen, eller `null` om ikke oppgitt.",
                  "example": "2026-06-24T08:05:00Z"
                }
              }
            }
          }
        },
        "example": {
          "airport": "OSL",
          "checkedAt": "2026-06-24T08:15:00.000Z",
          "hasActiveAlerts": true,
          "alerts": [
            {
              "flightId": "DY602",
              "statusCode": "D",
              "statusText": "Departed",
              "statusTime": "2026-06-24T08:05:00Z"
            },
            {
              "flightId": "SK4109",
              "statusCode": "E",
              "statusText": "New time",
              "statusTime": "2026-06-24T09:30:00Z"
            }
          ]
        }
      },
      "ConnectorEnturStops": {
        "type": "array",
        "title": "ConnectorEnturStops",
        "description": "Normalisert treffliste av kollektivholdeplasser og steder fra Entur Geocoder (GeoJSON-features flatet til kanoniske domene-objekter). Tom array ved ingen treff.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "description": "Ett normalisert sted/holdeplass.",
          "required": [
            "id",
            "name",
            "label",
            "layer",
            "longitude",
            "latitude",
            "locality",
            "county",
            "confidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Entur-id (`properties.id`, faller tilbake til `gid`, ellers tom streng).",
              "example": "NSR:StopPlace:337"
            },
            "name": {
              "type": "string",
              "description": "Stedsnavn (`properties.name`; tom streng hvis Entur utelater).",
              "example": "Oslo S"
            },
            "label": {
              "type": "string",
              "description": "Visningsetikett (`properties.label`, faller tilbake til `name`).",
              "example": "Oslo S, Oslo"
            },
            "layer": {
              "type": "string",
              "description": "Entur-lag/stedstype. `\"unknown\"` når Entur utelater feltet.",
              "enum": [
                "venue",
                "address",
                "street",
                "locality",
                "borough",
                "county",
                "country",
                "unknown"
              ],
              "example": "venue"
            },
            "longitude": {
              "type": "number",
              "description": "WGS84-lengdegrad (GeoJSON `geometry.coordinates[0]`).",
              "example": 10.7522
            },
            "latitude": {
              "type": "number",
              "description": "WGS84-breddegrad (GeoJSON `geometry.coordinates[1]`).",
              "example": 59.9111
            },
            "locality": {
              "type": [
                "string",
                "null"
              ],
              "description": "Kommune/sted (`properties.locality`); `null` hvis ukjent.",
              "example": "Oslo"
            },
            "county": {
              "type": [
                "string",
                "null"
              ],
              "description": "Fylke (`properties.county`); `null` hvis ukjent.",
              "example": "Oslo"
            },
            "confidence": {
              "type": "number",
              "description": "Entur-konfidensskår for treffet (`properties.confidence`); `1` som default hvis Entur utelater feltet.",
              "minimum": 0,
              "maximum": 1,
              "example": 0.95
            }
          }
        },
        "example": [
          {
            "id": "NSR:StopPlace:337",
            "name": "Oslo S",
            "label": "Oslo S, Oslo",
            "layer": "venue",
            "longitude": 10.7522,
            "latitude": 59.9111,
            "locality": "Oslo",
            "county": "Oslo",
            "confidence": 0.95
          },
          {
            "id": "NSR:StopPlace:58366",
            "name": "Nationaltheatret",
            "label": "Nationaltheatret, Oslo",
            "layer": "venue",
            "longitude": 10.7333,
            "latitude": 59.9145,
            "locality": "Oslo",
            "county": "Oslo",
            "confidence": 0.88
          }
        ]
      },
      "ConnectorLegemiddelverketSearch": {
        "type": "array",
        "title": "ConnectorLegemiddelverketSearch",
        "description": "Treffliste av normaliserte legemidler fra Statens legemiddelverk (DMP) sitt FHIR R4-søk. Bar array (tom ved ingen treff).",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "description": "Ett normalisert legemiddel (`NormalizedDrug`). Alle nøkler er alltid til stede; de fleste verdier kan være null avhengig av kilde.",
          "required": [
            "id",
            "itemNumber",
            "brandName",
            "atcCode",
            "atcName",
            "pharmaceuticalForm",
            "strength",
            "packSize",
            "manufacturer",
            "reimbursementCode",
            "reimbursementStatus",
            "pharmacyRetailPrice",
            "wholesalePrice",
            "onMarket",
            "prescriptionGroup",
            "marketingDate",
            "withdrawalDate"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Kanonisk id. FHIR: MedicinalProduct.id (eller identifier[0].value); legacy: råobjektets id eller varenummer. Kan være tom streng.",
              "example": "ID_0123456789"
            },
            "itemNumber": {
              "type": [
                "string",
                "null"
              ],
              "description": "Varenummer (FHIR identifier[0].value), eller null.",
              "example": "123456"
            },
            "brandName": {
              "type": [
                "string",
                "null"
              ],
              "description": "Handelsnavn / produktnavn, eller null.",
              "example": "Paracet"
            },
            "atcCode": {
              "type": [
                "string",
                "null"
              ],
              "description": "ATC-kode, eller null.",
              "example": "N02BE01"
            },
            "atcName": {
              "type": [
                "string",
                "null"
              ],
              "description": "ATC-navn (display fra ATC-coding), eller null.",
              "example": "Paracetamol"
            },
            "pharmaceuticalForm": {
              "type": [
                "string",
                "null"
              ],
              "description": "Legemiddelform (kombinert dose-form), eller null.",
              "example": "Tablett"
            },
            "strength": {
              "type": [
                "string",
                "null"
              ],
              "description": "Styrke. Alltid null fra FHIR-kilden; satt for legacy råobjekter.",
              "example": "500 mg"
            },
            "packSize": {
              "type": [
                "string",
                "null"
              ],
              "description": "Pakningsstørrelse. Alltid null fra FHIR-kilden.",
              "example": "20 stk"
            },
            "manufacturer": {
              "type": [
                "string",
                "null"
              ],
              "description": "Produsent / kontaktnavn, eller null.",
              "example": "Karo Pharma AS"
            },
            "reimbursementCode": {
              "type": [
                "string",
                "null"
              ],
              "description": "Refusjonskode. Alltid null fra FHIR-kilden.",
              "example": null
            },
            "reimbursementStatus": {
              "type": [
                "string",
                "null"
              ],
              "description": "Refusjonsstatus. Alltid null fra FHIR-kilden.",
              "example": null
            },
            "pharmacyRetailPrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Apotekets utsalgspris (AUP). Alltid null fra FHIR-kilden.",
              "example": null
            },
            "wholesalePrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Apotekets innkjøpspris (AIP). Alltid null fra FHIR-kilden.",
              "example": null
            },
            "onMarket": {
              "type": "boolean",
              "description": "Markedsføringsstatus. True for FHIR-treff; for legacy råobjekter speiler det `markedsforing` (default false).",
              "example": true
            },
            "prescriptionGroup": {
              "type": [
                "string",
                "null"
              ],
              "description": "Reseptgruppe. Alltid null fra FHIR-kilden.",
              "example": null
            },
            "marketingDate": {
              "type": [
                "string",
                "null"
              ],
              "description": "Markedsføringsdato (ISO-8601). Alltid null fra FHIR-kilden.",
              "example": null
            },
            "withdrawalDate": {
              "type": [
                "string",
                "null"
              ],
              "description": "Tilbaketrekkingsdato (ISO-8601). Alltid null fra FHIR-kilden.",
              "example": null
            }
          }
        },
        "example": [
          {
            "id": "ID_0123456789",
            "itemNumber": "123456",
            "brandName": "Paracet",
            "atcCode": "N02BE01",
            "atcName": "Paracetamol",
            "pharmaceuticalForm": "Tablett",
            "strength": null,
            "packSize": null,
            "manufacturer": "Karo Pharma AS",
            "reimbursementCode": null,
            "reimbursementStatus": null,
            "pharmacyRetailPrice": null,
            "wholesalePrice": null,
            "onMarket": true,
            "prescriptionGroup": null,
            "marketingDate": null,
            "withdrawalDate": null
          }
        ]
      },
      "ConnectorNominatimSearch": {
        "type": "object",
        "title": "ConnectorNominatimSearch",
        "additionalProperties": false,
        "description": "Treffliste fra Nominatim (OpenStreetMap) fri-form adresse-/stedsøk.",
        "required": [
          "source",
          "resultCount",
          "results"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "nominatim"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "nominatim"
          },
          "resultCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall treff i `results` (= `results.length`).",
            "example": 1
          },
          "results": {
            "type": "array",
            "description": "Geokodede steder (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Ett kanonisk sted (`CanonicalPlace`). Alle felt er alltid til stede; ukjente verdier er `null`.",
              "required": [
                "placeId",
                "osmType",
                "osmId",
                "lat",
                "lon",
                "displayName",
                "name",
                "category",
                "type",
                "importance",
                "boundingBox",
                "address"
              ],
              "properties": {
                "placeId": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "Nominatims interne sted-ID, eller `null`.",
                  "example": 123456
                },
                "osmType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "OSM-objekttype (`node`/`way`/`relation`), eller `null`.",
                  "example": "way"
                },
                "osmId": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "OSM-objekt-ID, eller `null`.",
                  "example": 987654321
                },
                "lat": {
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90,
                  "description": "Breddegrad (WGS84). 0 hvis upstream manglet verdi.",
                  "example": 59.9138688
                },
                "lon": {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "description": "Lengdegrad (WGS84). 0 hvis upstream manglet verdi.",
                  "example": 10.7522454
                },
                "displayName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Sammensatt visningsnavn fra Nominatim, eller `null`.",
                  "example": "Storgata 1, Sentrum, Oslo, 0155, Norge"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Primærnavn på stedet/POI, eller `null`.",
                  "example": "Storgata"
                },
                "category": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "OSM-kategori (`category`, faller tilbake på `class`), eller `null`.",
                  "example": "highway"
                },
                "type": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "OSM-undertype innenfor kategorien, eller `null`.",
                  "example": "residential"
                },
                "importance": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Nominatims relevans-/viktighetsscore (0–1), eller `null`.",
                  "example": 0.42
                },
                "boundingBox": {
                  "type": [
                    "array",
                    "null"
                  ],
                  "description": "Avgrensningsboks `[minLat, maxLat, minLon, maxLon]`, eller `null` hvis upstream ikke ga fire gyldige tall.",
                  "minItems": 4,
                  "maxItems": 4,
                  "items": {
                    "type": "number"
                  },
                  "example": [
                    59.913,
                    59.9145,
                    10.751,
                    10.7535
                  ]
                },
                "address": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Strukturert adresse (`CanonicalAddress`). Alle felt alltid til stede; ukjente verdier er `null`.",
                  "required": [
                    "houseNumber",
                    "road",
                    "suburb",
                    "city",
                    "municipality",
                    "county",
                    "state",
                    "postcode",
                    "country",
                    "countryCode"
                  ],
                  "properties": {
                    "houseNumber": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "1"
                    },
                    "road": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Storgata"
                    },
                    "suburb": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Bydel/nabolag (`suburb`, faller tilbake på `neighbourhood`).",
                      "example": "Sentrum"
                    },
                    "city": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "By/tettsted (`city`/`town`/`village`).",
                      "example": "Oslo"
                    },
                    "municipality": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Oslo"
                    },
                    "county": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Oslo"
                    },
                    "state": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Oslo"
                    },
                    "postcode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "0155"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Norge"
                    },
                    "countryCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ISO-3166-1 alpha-2, små bokstaver.",
                      "example": "no"
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "source": "nominatim",
          "resultCount": 1,
          "results": [
            {
              "placeId": 123456,
              "osmType": "way",
              "osmId": 987654321,
              "lat": 59.9138688,
              "lon": 10.7522454,
              "displayName": "Storgata 1, Sentrum, Oslo, 0155, Norge",
              "name": "Storgata",
              "category": "highway",
              "type": "residential",
              "importance": 0.42,
              "boundingBox": [
                59.913,
                59.9145,
                10.751,
                10.7535
              ],
              "address": {
                "houseNumber": "1",
                "road": "Storgata",
                "suburb": "Sentrum",
                "city": "Oslo",
                "municipality": "Oslo",
                "county": "Oslo",
                "state": "Oslo",
                "postcode": "0155",
                "country": "Norge",
                "countryCode": "no"
              }
            }
          ]
        }
      },
      "ConnectorMetYrForecast": {
        "type": "object",
        "title": "ConnectorMetYrForecast",
        "additionalProperties": false,
        "description": "Normalisert stedsspesifikt værvarsel for én lokasjon (MET Norway / Yr Locationforecast 2.0). Koordinater, oppdateringstidspunkt, enheter og en tidsserie med øyeblikks- og prognoseverdier.",
        "required": [
          "lat",
          "lon",
          "updatedAt",
          "units",
          "timeseries",
          "fetchedAt"
        ],
        "properties": {
          "lat": {
            "type": "number",
            "description": "Breddegrad (WGS 84) hentet fra MET-responsens geometri.",
            "example": 59.91
          },
          "lon": {
            "type": "number",
            "description": "Lengdegrad (WGS 84) hentet fra MET-responsens geometri.",
            "example": 10.75
          },
          "altitude": {
            "type": "number",
            "description": "Høyde over havet i meter, fra MET-geometrien. Kan avvike fra forespurt altitude og utelates når MET ikke oppgir den.",
            "example": 8
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601-tidspunkt for når MET sist oppdaterte varslet (`meta.updated_at`).",
            "example": "2026-06-24T06:00:00Z"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Enheter for rådatafelt, videresendt umodifisert fra MET (`meta.units`). Nøkler er MET-feltnavn, verdier er enheter.",
            "example": {
              "air_temperature": "celsius",
              "wind_speed": "m/s",
              "precipitation_amount": "mm",
              "relative_humidity": "%"
            }
          },
          "timeseries": {
            "type": "array",
            "description": "Tidsserie med varselverdier (tom hvis MET ikke returnerer steg).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Ett tidssteg i varslet.",
              "required": [
                "time",
                "instant"
              ],
              "properties": {
                "time": {
                  "type": "string",
                  "format": "date-time",
                  "description": "ISO 8601-tidspunkt for dette tidssteget.",
                  "example": "2026-06-24T12:00:00Z"
                },
                "instant": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Øyeblikksverdier ved `time`. Alle felt er valgfrie — MET utelater det som mangler (avhengig av variant compact/complete).",
                  "properties": {
                    "airTemperature": {
                      "type": "number",
                      "description": "Lufttemperatur (celsius).",
                      "example": 17.4
                    },
                    "airPressureAtSeaLevel": {
                      "type": "number",
                      "description": "Lufttrykk ved havnivå (hPa).",
                      "example": 1013.2
                    },
                    "cloudAreaFraction": {
                      "type": "number",
                      "description": "Skydekke (%).",
                      "example": 42.1
                    },
                    "relativeHumidity": {
                      "type": "number",
                      "description": "Relativ luftfuktighet (%).",
                      "example": 65
                    },
                    "windFromDirection": {
                      "type": "number",
                      "description": "Vindretning i grader (0–360, fra-retning).",
                      "example": 210.5
                    },
                    "windSpeed": {
                      "type": "number",
                      "description": "Vindhastighet (m/s).",
                      "example": 4.2
                    },
                    "windSpeedOfGust": {
                      "type": "number",
                      "description": "Vindkast (m/s) — kun i `complete`-variant.",
                      "example": 7.8
                    },
                    "uvIndex": {
                      "type": "number",
                      "description": "UV-indeks for klar himmel — kun i `complete`-variant.",
                      "example": 3.1
                    },
                    "dewPointTemperature": {
                      "type": "number",
                      "description": "Duggpunktstemperatur (celsius) — kun i `complete`-variant.",
                      "example": 11
                    },
                    "fogAreaFraction": {
                      "type": "number",
                      "description": "Tåkedekke (%) — kun i `complete`-variant.",
                      "example": 0
                    }
                  }
                },
                "next1Hours": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Prognose for neste 1 time (finnes for tidlige tidssteg).",
                  "properties": {
                    "symbolCode": {
                      "type": "string",
                      "description": "Yr-værsymbolkode (`summary.symbol_code`).",
                      "example": "partlycloudy_day"
                    },
                    "precipitationAmount": {
                      "type": "number",
                      "description": "Forventet nedbørsmengde (mm).",
                      "example": 0
                    },
                    "probabilityOfPrecipitation": {
                      "type": "number",
                      "description": "Sannsynlighet for nedbør (%).",
                      "example": 12
                    },
                    "probabilityOfThunder": {
                      "type": "number",
                      "description": "Sannsynlighet for torden (%).",
                      "example": 0
                    }
                  }
                },
                "next6Hours": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Prognose for neste 6 timer.",
                  "properties": {
                    "symbolCode": {
                      "type": "string",
                      "description": "Yr-værsymbolkode (`summary.symbol_code`).",
                      "example": "cloudy"
                    },
                    "precipitationAmount": {
                      "type": "number",
                      "description": "Forventet nedbørsmengde (mm).",
                      "example": 1.4
                    },
                    "airTemperatureMax": {
                      "type": "number",
                      "description": "Maks lufttemperatur i perioden (celsius).",
                      "example": 19.1
                    },
                    "airTemperatureMin": {
                      "type": "number",
                      "description": "Min lufttemperatur i perioden (celsius).",
                      "example": 15.6
                    }
                  }
                },
                "next12Hours": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Prognose for neste 12 timer.",
                  "properties": {
                    "symbolCode": {
                      "type": "string",
                      "description": "Yr-værsymbolkode (`summary.symbol_code`).",
                      "example": "rain"
                    },
                    "precipitationAmount": {
                      "type": "number",
                      "description": "Forventet nedbørsmengde (mm).",
                      "example": 3.2
                    },
                    "airTemperatureMax": {
                      "type": "number",
                      "description": "Maks lufttemperatur i perioden (celsius).",
                      "example": 18.3
                    },
                    "airTemperatureMin": {
                      "type": "number",
                      "description": "Min lufttemperatur i perioden (celsius).",
                      "example": 13.9
                    }
                  }
                }
              }
            }
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601-tidspunkt for når ketl hentet data (#74 explainability).",
            "example": "2026-06-24T11:58:42.117Z"
          }
        },
        "example": {
          "lat": 59.91,
          "lon": 10.75,
          "altitude": 8,
          "updatedAt": "2026-06-24T06:00:00Z",
          "units": {
            "air_temperature": "celsius",
            "wind_speed": "m/s",
            "precipitation_amount": "mm",
            "relative_humidity": "%"
          },
          "timeseries": [
            {
              "time": "2026-06-24T12:00:00Z",
              "instant": {
                "airTemperature": 17.4,
                "airPressureAtSeaLevel": 1013.2,
                "cloudAreaFraction": 42.1,
                "relativeHumidity": 65,
                "windFromDirection": 210.5,
                "windSpeed": 4.2
              },
              "next1Hours": {
                "symbolCode": "partlycloudy_day",
                "precipitationAmount": 0,
                "probabilityOfPrecipitation": 12
              },
              "next6Hours": {
                "symbolCode": "cloudy",
                "precipitationAmount": 1.4,
                "airTemperatureMax": 19.1,
                "airTemperatureMin": 15.6
              }
            }
          ],
          "fetchedAt": "2026-06-24T11:58:42.117Z"
        }
      },
      "ConnectorWorldBankIndicator": {
        "type": "object",
        "title": "ConnectorWorldBankIndicator",
        "additionalProperties": false,
        "description": "Indikator-tidsserie for ett eller flere land fra World Bank Open Data API v2. Inneholder paginerings-metadata og en flat liste av normaliserte observasjoner.",
        "required": [
          "source",
          "indicatorId",
          "countries",
          "page",
          "pages",
          "perPage",
          "total",
          "hasMore",
          "nextPage",
          "lastUpdated",
          "observations"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "world-bank"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "world-bank"
          },
          "indicatorId": {
            "type": "string",
            "description": "Forespurt World Bank indikatorkode (echoes request-param `indicator`).",
            "example": "NY.GDP.MKTP.CD"
          },
          "countries": {
            "type": "array",
            "description": "Distinkt liste av land-IDer som faktisk forekommer i `observations` (avledet fra observasjonene, ikke fra forespørselen).",
            "items": {
              "type": "string",
              "description": "World Bank land-ID (ISO2-aktig kode fra upstream `country.id`).",
              "example": "NO"
            },
            "example": [
              "NO",
              "SE"
            ]
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Gjeldende side-nummer (fra upstream meta, default 1).",
            "example": 1
          },
          "pages": {
            "type": "integer",
            "minimum": 0,
            "description": "Totalt antall sider tilgjengelig (fra upstream meta).",
            "example": 1
          },
          "perPage": {
            "type": "integer",
            "minimum": 0,
            "description": "Faktisk antall rader per side returnert av upstream. Kan avvike fra forespurt `per_page` dersom upstream klipper; koerces til number.",
            "example": 100
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Totalt antall observasjoner på tvers av alle sider (fra upstream meta).",
            "example": 130
          },
          "hasMore": {
            "type": "boolean",
            "description": "Avledet — finnes flere sider å hente (`page < pages`).",
            "example": false
          },
          "nextPage": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "description": "Neste side-nummer, eller `null` om vi er på siste side.",
            "example": null
          },
          "lastUpdated": {
            "type": [
              "string",
              "null"
            ],
            "description": "Datostempel for siste oppdatering hos World Bank (fra upstream meta), eller `null`.",
            "example": "2024-12-16"
          },
          "observations": {
            "type": "array",
            "description": "Flat liste av normaliserte observasjoner (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én observasjon (ett land × én periode).",
              "required": [
                "country",
                "countryId",
                "countryIso3",
                "indicator",
                "indicatorId",
                "date",
                "value",
                "unit",
                "obsStatus"
              ],
              "properties": {
                "country": {
                  "type": "string",
                  "description": "Lands-navn fra upstream (tom streng om mangler).",
                  "example": "Norway"
                },
                "countryId": {
                  "type": "string",
                  "description": "Lands-ID fra upstream `country.id` (tom streng om mangler).",
                  "example": "NO"
                },
                "countryIso3": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "ISO3-landkode hvis upstream eksponerer den, ellers `null`.",
                  "example": "NOR"
                },
                "indicator": {
                  "type": "string",
                  "description": "Indikator-navn fra upstream (tom streng om mangler).",
                  "example": "GDP (current US$)"
                },
                "indicatorId": {
                  "type": "string",
                  "description": "Indikator-ID fra upstream, eller den forespurte koden som fallback.",
                  "example": "NY.GDP.MKTP.CD"
                },
                "date": {
                  "type": "string",
                  "description": "Observasjonsperiode (vanligvis år som streng).",
                  "example": "2023"
                },
                "value": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Observert verdi, eller `null` når upstream mangler data for perioden.",
                  "example": 485510152864.85
                },
                "unit": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Enhet hvis upstream oppgir den, ellers `null`.",
                  "example": null
                },
                "obsStatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Observasjonsstatus-flagg fra upstream (`obs_status`), ellers `null`.",
                  "example": null
                }
              }
            }
          }
        },
        "example": {
          "source": "world-bank",
          "indicatorId": "NY.GDP.MKTP.CD",
          "countries": [
            "NO",
            "SE"
          ],
          "page": 1,
          "pages": 1,
          "perPage": 100,
          "total": 130,
          "hasMore": false,
          "nextPage": null,
          "lastUpdated": "2024-12-16",
          "observations": [
            {
              "country": "Norway",
              "countryId": "NO",
              "countryIso3": "NOR",
              "indicator": "GDP (current US$)",
              "indicatorId": "NY.GDP.MKTP.CD",
              "date": "2023",
              "value": 485510152864.85,
              "unit": null,
              "obsStatus": null
            },
            {
              "country": "Sweden",
              "countryId": "SE",
              "countryIso3": "SWE",
              "indicator": "GDP (current US$)",
              "indicatorId": "NY.GDP.MKTP.CD",
              "date": "2023",
              "value": 593267593818.93,
              "unit": null,
              "obsStatus": null
            }
          ]
        }
      },
      "ConnectorSodirField": {
        "type": "object",
        "title": "ConnectorSodirField",
        "additionalProperties": false,
        "description": "Ett normalisert felt fra Sokkeldirektoratets (SODIR) feltregister, slått opp på navn (case-insensitivt). Volum-/reservetall er i SODIR-enheter (Mill Sm³ olje/NGL/ kondensat, Bill Sm³ gass).",
        "required": [
          "name",
          "status"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Feltnavn (kanonisk SODIR-skrivemåte, vanligvis uppercase).",
            "example": "TROLL"
          },
          "operator": {
            "type": [
              "string",
              "null"
            ],
            "description": "Operatørselskap (langform). Null hvis ikke oppgitt av SODIR.",
            "example": "Equinor Energy AS"
          },
          "status": {
            "type": "string",
            "description": "Nåværende aktivitetsstatus fra SODIR (`fldCurrentActivitySatus`), f.eks. \"IN PRODUCTION\", \"SHUT DOWN\", \"APPROVED FOR PRODUCTION\".",
            "example": "IN PRODUCTION"
          },
          "discoveryYear": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Funn-år for feltet. Null hvis ukjent.",
            "example": 1979
          },
          "npdId": {
            "type": [
              "integer",
              "null"
            ],
            "description": "SODIR/NPD intern felt-ID (`fldNpdidField`). Null hvis ukjent.",
            "example": 43765
          },
          "recoverableOilMillSm3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Totale utvinnbare olje-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
            "example": 230.5
          },
          "recoverableGasBillSm3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Totale utvinnbare gass-ressurser i Bill Sm³. Null hvis ikke oppgitt.",
            "example": 1310
          },
          "recoverableNglMillSm3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Totale utvinnbare NGL-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
            "example": 26.4
          },
          "recoverableCondensateMillSm3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Totale utvinnbare kondensat-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
            "example": 2.1
          },
          "remainingOilMillSm3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Gjenværende olje-ressurser i Mill Sm³. Null hvis ikke oppgitt.",
            "example": 18.7
          },
          "remainingGasBillSm3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Gjenværende gass-ressurser i Bill Sm³. Null hvis ikke oppgitt.",
            "example": 640
          }
        },
        "example": {
          "name": "TROLL",
          "operator": "Equinor Energy AS",
          "status": "IN PRODUCTION",
          "discoveryYear": 1979,
          "npdId": 43765,
          "recoverableOilMillSm3": 230.5,
          "recoverableGasBillSm3": 1310,
          "recoverableNglMillSm3": 26.4,
          "recoverableCondensateMillSm3": 2.1,
          "remainingOilMillSm3": 18.7,
          "remainingGasBillSm3": 640
        }
      },
      "ConnectorSmhiParameters": {
        "type": "object",
        "title": "ConnectorSmhiParameters",
        "additionalProperties": false,
        "description": "Meteorologiske måleparametre fra SMHI Öppna data (metobs). Hver parameter identifiseres av en numerisk `key` som brukes videre i stasjons- og observasjonsoppslag.",
        "required": [
          "parameters"
        ],
        "properties": {
          "parameters": {
            "type": "array",
            "description": "Liste av tilgjengelige måleparametre (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én SMHI-måleparameter.",
              "required": [
                "key",
                "name",
                "summary",
                "unit"
              ],
              "properties": {
                "key": {
                  "type": "integer",
                  "description": "Numerisk parameter-ID (brukes i stations/observations).",
                  "example": 1
                },
                "name": {
                  "type": "string",
                  "description": "Parameternavn (fra SMHI `title`).",
                  "example": "Lufttemperatur"
                },
                "summary": {
                  "type": "string",
                  "description": "Kort beskrivelse av parameteren.",
                  "example": "momentanvärde, 1 gång/tim"
                },
                "unit": {
                  "type": "string",
                  "description": "Måleenhet. Tom streng når SMHI ikke oppgir enhet på katalog-nivå.",
                  "example": ""
                }
              }
            }
          }
        },
        "example": {
          "parameters": [
            {
              "key": 1,
              "name": "Lufttemperatur",
              "summary": "momentanvärde, 1 gång/tim",
              "unit": ""
            },
            {
              "key": 21,
              "name": "Byvind",
              "summary": "max, 1 gång/tim",
              "unit": ""
            }
          ]
        }
      },
      "ConnectorSmhiStations": {
        "type": "object",
        "title": "ConnectorSmhiStations",
        "additionalProperties": false,
        "description": "Målestasjoner som rapporterer den forespurte parameteren, fra SMHI Öppna data. `parameter` ekkoer parameter-ID-en fra path-en.",
        "required": [
          "parameter",
          "stations"
        ],
        "properties": {
          "parameter": {
            "type": "integer",
            "description": "Parameter-ID (ekko av path-parameteret `{parameter}`).",
            "example": 1
          },
          "stations": {
            "type": "array",
            "description": "Stasjoner som måler parameteren (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én SMHI-målestasjon.",
              "required": [
                "id",
                "name",
                "owner",
                "ownerCategory",
                "measuringStations",
                "active",
                "from",
                "to",
                "latitude",
                "longitude",
                "height"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "Stasjons-ID (brukes i observasjonsoppslag).",
                  "example": 159880
                },
                "name": {
                  "type": "string",
                  "example": "Falsterbo A"
                },
                "owner": {
                  "type": "string",
                  "description": "Stasjonseier.",
                  "example": "SMHI"
                },
                "ownerCategory": {
                  "type": "string",
                  "description": "Eierkategori.",
                  "example": "CLIMATE"
                },
                "measuringStations": {
                  "type": "string",
                  "description": "Måletype/-klasse (SMHI `measuringStations`).",
                  "example": "CORE"
                },
                "active": {
                  "type": "boolean",
                  "description": "Om stasjonen er aktiv.",
                  "example": true
                },
                "from": {
                  "type": "integer",
                  "description": "Startdato for målingene (epoch millisekunder).",
                  "example": 1420070400000
                },
                "to": {
                  "type": "integer",
                  "description": "Sluttdato/siste måling (epoch millisekunder).",
                  "example": 1704067200000
                },
                "latitude": {
                  "type": "number",
                  "description": "Breddegrad (WGS84).",
                  "example": 55.3837
                },
                "longitude": {
                  "type": "number",
                  "description": "Lengdegrad (WGS84).",
                  "example": 12.8163
                },
                "height": {
                  "type": "number",
                  "description": "Stasjonshøyde over havet (meter).",
                  "example": 5.2
                }
              }
            }
          }
        },
        "example": {
          "parameter": 1,
          "stations": [
            {
              "id": 159880,
              "name": "Falsterbo A",
              "owner": "SMHI",
              "ownerCategory": "CLIMATE",
              "measuringStations": "CORE",
              "active": true,
              "from": 1420070400000,
              "to": 1704067200000,
              "latitude": 55.3837,
              "longitude": 12.8163,
              "height": 5.2
            }
          ]
        }
      },
      "ConnectorSmhiObservations": {
        "type": "object",
        "title": "ConnectorSmhiObservations",
        "additionalProperties": false,
        "description": "Tidsserie av observasjoner for én stasjon og én parameter fra SMHI Öppna data, for den valgte perioden.",
        "required": [
          "observations"
        ],
        "properties": {
          "observations": {
            "type": "object",
            "additionalProperties": false,
            "description": "Observasjonsserien med metadata.",
            "required": [
              "stationId",
              "stationName",
              "parameter",
              "parameterName",
              "period",
              "values"
            ],
            "properties": {
              "stationId": {
                "type": "integer",
                "description": "Stasjons-ID.",
                "example": 159880
              },
              "stationName": {
                "type": "string",
                "description": "Stasjonsnavn (tom streng hvis SMHI utelater).",
                "example": "Falsterbo A"
              },
              "parameter": {
                "type": "integer",
                "description": "Parameter-ID.",
                "example": 1
              },
              "parameterName": {
                "type": "string",
                "description": "Parameternavn (tom streng hvis SMHI utelater).",
                "example": "Lufttemperatur"
              },
              "period": {
                "type": "string",
                "description": "Valgt periode.",
                "enum": [
                  "latest-hour",
                  "latest-day",
                  "latest-months",
                  "corrected-archive"
                ],
                "example": "latest-months"
              },
              "values": {
                "type": "array",
                "description": "Måleverdier i tidsrekkefølge (tom hvis ingen data).",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Én observasjon.",
                  "required": [
                    "date",
                    "value",
                    "quality"
                  ],
                  "properties": {
                    "date": {
                      "type": "integer",
                      "description": "Tidspunkt for målingen (epoch millisekunder).",
                      "example": 1704067200000
                    },
                    "value": {
                      "type": "string",
                      "description": "Måleverdi som tekst (SMHI leverer den som streng).",
                      "example": "3.2"
                    },
                    "quality": {
                      "type": "string",
                      "description": "SMHI-kvalitetskode (f.eks. G=godkjent, Y, R).",
                      "example": "G"
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "observations": {
            "stationId": 159880,
            "stationName": "Falsterbo A",
            "parameter": 1,
            "parameterName": "Lufttemperatur",
            "period": "latest-months",
            "values": [
              {
                "date": 1704067200000,
                "value": "3.2",
                "quality": "G"
              },
              {
                "date": 1704070800000,
                "value": "3.0",
                "quality": "G"
              }
            ]
          }
        }
      },
      "ConnectorSmhiForecast": {
        "type": "object",
        "title": "ConnectorSmhiForecast",
        "additionalProperties": false,
        "description": "Punktprognose fra SMHI for gitt lat/lon. Rota ER prognose-objektet (ingen wrapper).",
        "required": [
          "createdTime",
          "geometry",
          "timeSeries"
        ],
        "properties": {
          "createdTime": {
            "type": "string",
            "format": "date-time",
            "description": "Tidspunkt prognosen ble laget (ISO 8601, fra SMHI `createdTime`).",
            "example": "2026-07-01T06:00:00Z"
          },
          "geometry": {
            "type": "object",
            "additionalProperties": false,
            "description": "Punktgeometri (GeoJSON Point).",
            "required": [
              "type",
              "coordinates"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Point"
                ],
                "example": "Point"
              },
              "coordinates": {
                "type": "array",
                "description": "[lengdegrad, breddegrad] (WGS84).",
                "minItems": 2,
                "maxItems": 2,
                "items": {
                  "type": "number"
                },
                "example": [
                  10.75,
                  59.91
                ]
              }
            }
          },
          "timeSeries": {
            "type": "array",
            "description": "Prognose per tidssteg.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Ett tidssteg.",
              "required": [
                "time",
                "data"
              ],
              "properties": {
                "time": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Gyldighetstidspunkt (ISO 8601).",
                  "example": "2026-07-01T12:00:00Z"
                },
                "data": {
                  "type": "object",
                  "description": "Parameterverdier keyet på fullt parameternavn (air_temperature, wind_speed, precipitation_amount_mean, …). Verdiene er numeriske.",
                  "additionalProperties": {
                    "type": "number"
                  },
                  "example": {
                    "air_temperature": 18.4,
                    "wind_speed": 3.2,
                    "precipitation_amount_mean": 0
                  }
                }
              }
            }
          }
        },
        "example": {
          "createdTime": "2026-07-01T06:00:00Z",
          "geometry": {
            "type": "Point",
            "coordinates": [
              10.75,
              59.91
            ]
          },
          "timeSeries": [
            {
              "time": "2026-07-01T12:00:00Z",
              "data": {
                "air_temperature": 18.4,
                "wind_speed": 3.2,
                "precipitation_amount_mean": 0
              }
            }
          ]
        }
      },
      "ConnectorNasjonalarkivetIdentify": {
        "type": "object",
        "title": "ConnectorNasjonalarkivetIdentify",
        "additionalProperties": false,
        "description": "OAI-PMH repository-metadata for Nasjonalarkivet (Arkivverket). Rota ER Identify-objektet. Alle felt er `null` når OAI-PMH-svaret utelater dem.",
        "required": [
          "repositoryName",
          "baseURL",
          "protocolVersion",
          "adminEmail",
          "earliestDatestamp",
          "deletedRecord",
          "granularity"
        ],
        "properties": {
          "repositoryName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Navn på OAI-PMH-repositoriet.",
            "example": "Arkivverket OAI-PMH"
          },
          "baseURL": {
            "type": [
              "string",
              "null"
            ],
            "description": "Repositoriets OAI-PMH base-URL.",
            "example": "https://oai.arkivverket.no/OAI-PMH/"
          },
          "protocolVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "OAI-PMH-protokollversjon.",
            "example": "2.0"
          },
          "adminEmail": {
            "type": [
              "string",
              "null"
            ],
            "description": "Administratorens e-postadresse.",
            "example": "post@arkivverket.no"
          },
          "earliestDatestamp": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tidligste datostempel i repositoriet.",
            "example": "2001-01-01"
          },
          "deletedRecord": {
            "type": [
              "string",
              "null"
            ],
            "description": "Repositoriets policy for slettede poster (no/persistent/transient).",
            "example": "transient"
          },
          "granularity": {
            "type": [
              "string",
              "null"
            ],
            "description": "Datostempel-granularitet.",
            "example": "YYYY-MM-DDThh:mm:ssZ"
          }
        },
        "example": {
          "repositoryName": "Arkivverket OAI-PMH",
          "baseURL": "https://oai.arkivverket.no/OAI-PMH/",
          "protocolVersion": "2.0",
          "adminEmail": "post@arkivverket.no",
          "earliestDatestamp": "2001-01-01",
          "deletedRecord": "transient",
          "granularity": "YYYY-MM-DDThh:mm:ssZ"
        }
      },
      "ConnectorNasjonalarkivetSets": {
        "type": "object",
        "title": "ConnectorNasjonalarkivetSets",
        "additionalProperties": false,
        "description": "OAI-PMH set-hierarki (samlinger) for Nasjonalarkivet, med paginerings-token.",
        "required": [
          "sets",
          "resumptionToken"
        ],
        "properties": {
          "sets": {
            "type": "array",
            "description": "Sett/samlinger (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Ett OAI-PMH-sett.",
              "required": [
                "setSpec",
                "setName"
              ],
              "properties": {
                "setSpec": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Maskinlesbar set-identifikator (brukes som `set`-filter).",
                  "example": "arkiv"
                },
                "setName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Menneskelesbart set-navn.",
                  "example": "Arkiv"
                }
              }
            }
          },
          "resumptionToken": {
            "type": [
              "string",
              "null"
            ],
            "description": "Token for neste side (send som `resumptionToken`-param). `null` når det ikke er flere sider.",
            "example": null
          }
        },
        "example": {
          "sets": [
            {
              "setSpec": "arkiv",
              "setName": "Arkiv"
            },
            {
              "setSpec": "foto",
              "setName": "Fotografier"
            }
          ],
          "resumptionToken": null
        }
      },
      "ConnectorNasjonalarkivetRecords": {
        "type": "object",
        "title": "ConnectorNasjonalarkivetRecords",
        "additionalProperties": false,
        "description": "OAI-PMH-poster (Dublin Core) fra Nasjonalarkivet, med paginerings-token.",
        "required": [
          "records",
          "resumptionToken"
        ],
        "properties": {
          "records": {
            "type": "array",
            "description": "Poster (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én OAI-PMH-post (Dublin Core-felt).",
              "required": [
                "identifier",
                "datestamp",
                "setSpec",
                "status",
                "title",
                "creator",
                "date",
                "description"
              ],
              "properties": {
                "identifier": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "OAI-PMH-postidentifikator.",
                  "example": "oai:arkivverket.no:12345"
                },
                "datestamp": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Datostempel for siste endring.",
                  "example": "2020-05-01"
                },
                "setSpec": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Settet posten tilhører.",
                  "example": "arkiv"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Header-status; `\"deleted\"` for slettede poster, ellers `null`.",
                  "example": null
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dublin Core `dc:title`.",
                  "example": "Kirkebok 1801"
                },
                "creator": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dublin Core `dc:creator`.",
                  "example": "Statsarkivet i Oslo"
                },
                "date": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dublin Core `dc:date`.",
                  "example": "1801"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dublin Core `dc:description`.",
                  "example": "Ministerialbok for Aker prestegjeld."
                }
              }
            }
          },
          "resumptionToken": {
            "type": [
              "string",
              "null"
            ],
            "description": "Token for neste side (send som `resumptionToken`-param). `null` når det ikke er flere sider.",
            "example": "abc123:100"
          }
        },
        "example": {
          "records": [
            {
              "identifier": "oai:arkivverket.no:12345",
              "datestamp": "2020-05-01",
              "setSpec": "arkiv",
              "status": null,
              "title": "Kirkebok 1801",
              "creator": "Statsarkivet i Oslo",
              "date": "1801",
              "description": "Ministerialbok for Aker prestegjeld."
            }
          ],
          "resumptionToken": "abc123:100"
        }
      },
      "ConnectorDataportalSeSearch": {
        "type": "object",
        "title": "ConnectorDataportalSeSearch",
        "additionalProperties": false,
        "description": "Paginert datasett-søk mot Sveriges dataportal (CKAN package_search). `count` er totalt antall treff; `datasets` er gjeldende side.",
        "required": [
          "datasets",
          "count",
          "rows",
          "start"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Totalt antall treff (over alle sider).",
            "example": 342
          },
          "rows": {
            "type": "integer",
            "minimum": 0,
            "description": "Sidestørrelse (antall datasett i denne responsen).",
            "example": 20
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for denne siden (0-basert).",
            "example": 0
          },
          "datasets": {
            "type": "array",
            "description": "Datasett på gjeldende side (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Normalisert datasett (`NormalizedDataset`). Skalar-felt er nullbare; tags/resources er alltid lister.",
              "required": [
                "id",
                "name",
                "title",
                "description",
                "organization",
                "license",
                "modified",
                "created",
                "tags",
                "resources"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "a1b2c3d4-0000-1111-2222-333344445555"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "CKAN-slug.",
                  "example": "befolkningsstatistik-kommuner"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Befolkningsstatistik per kommun"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "CKAN `notes`.",
                  "example": "Årlig befolkningsstatistik per kommun."
                },
                "organization": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Statistiska centralbyrån"
                },
                "license": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Creative Commons CC0"
                },
                "modified": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "CKAN `metadata_modified` (ISO-8601).",
                  "example": "2025-03-01T09:12:00.000000"
                },
                "created": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "CKAN `metadata_created` (ISO-8601).",
                  "example": "2020-01-15T08:00:00.000000"
                },
                "tags": {
                  "type": "array",
                  "description": "Emneord. Tom liste ved ingen.",
                  "items": {
                    "type": "string",
                    "example": "befolkning"
                  }
                },
                "resources": {
                  "type": "array",
                  "description": "Distribusjoner/filer. Tom liste ved ingen.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "format",
                      "url"
                    ],
                    "description": "Én ressurs. Alle felt nullbare.",
                    "properties": {
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Befolkning 2024 (CSV)"
                      },
                      "format": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "CSV"
                      },
                      "url": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "count": 342,
          "rows": 20,
          "start": 0,
          "datasets": [
            {
              "id": "a1b2c3d4-0000-1111-2222-333344445555",
              "name": "befolkningsstatistik-kommuner",
              "title": "Befolkningsstatistik per kommun",
              "description": "Årlig befolkningsstatistik per kommun.",
              "organization": "Statistiska centralbyrån",
              "license": "Creative Commons CC0",
              "modified": "2025-03-01T09:12:00.000000",
              "created": "2020-01-15T08:00:00.000000",
              "tags": [
                "befolkning",
                "kommun"
              ],
              "resources": [
                {
                  "name": "Befolkning 2024 (CSV)",
                  "format": "CSV",
                  "url": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                }
              ]
            }
          ]
        }
      },
      "ConnectorDataportalSeOrganisations": {
        "type": "object",
        "title": "ConnectorDataportalSeOrganisations",
        "additionalProperties": false,
        "description": "Alle utgivende organisasjoner i Sveriges dataportal (CKAN organization_list) — som slug-strenger.",
        "required": [
          "organisations"
        ],
        "properties": {
          "organisations": {
            "type": "array",
            "description": "Organisasjons-slugs (tom liste ved ingen treff).",
            "items": {
              "type": "string",
              "description": "CKAN-organisasjons-slug.",
              "example": "statistiska-centralbyran"
            }
          }
        },
        "example": {
          "organisations": [
            "statistiska-centralbyran",
            "naturvardsverket",
            "trafikverket"
          ]
        }
      },
      "ConnectorStortingetMember": {
        "type": "object",
        "title": "ConnectorStortingetMember",
        "additionalProperties": false,
        "description": "Normalisert profil for én stortingsrepresentant fra Stortinget Open Data. Identitetsfelt og varastatus er alltid til stede; øvrige felt utelates når upstream mangler dem.",
        "required": [
          "id",
          "etternavn",
          "fornavn",
          "fulltNavn",
          "varaRepresentant"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Representantens id i Stortinget Open Data.",
            "example": "ABCD"
          },
          "etternavn": {
            "type": "string",
            "description": "Etternavn (tom streng hvis upstream mangler det).",
            "example": "Solberg"
          },
          "fornavn": {
            "type": "string",
            "description": "Fornavn (tom streng hvis upstream mangler det).",
            "example": "Erna"
          },
          "fulltNavn": {
            "type": "string",
            "description": "Sammensatt \"fornavn etternavn\" (utledet ved normalisering).",
            "example": "Erna Solberg"
          },
          "foedselsdato": {
            "type": "string",
            "format": "date-time",
            "description": "Fødselsdato (ISO-8601). Konvertert fra Microsoft JSON-datoformat. Utelatt når upstream ikke oppgir den.",
            "example": "1961-02-24T00:00:00.000Z"
          },
          "doedsdato": {
            "type": "string",
            "format": "date-time",
            "description": "Dødsdato (ISO-8601) hvis registrert. Konvertert fra Microsoft JSON-datoformat. Vanligvis utelatt.",
            "example": "2025-01-01T00:00:00.000Z"
          },
          "kjoenn": {
            "type": "string",
            "description": "Kjønn slik Stortinget oppgir det. Utelatt når det mangler.",
            "example": "kvinne"
          },
          "partiId": {
            "type": "string",
            "description": "Parti-id (Stortingets kode for partiet). Utelatt når det mangler.",
            "example": "H"
          },
          "fylkeId": {
            "type": "string",
            "description": "Fylke-id (Stortingets valgdistrikt-kode). Utelatt når det mangler.",
            "example": "HO"
          },
          "varaRepresentant": {
            "type": "boolean",
            "description": "Sant hvis representanten er vararepresentant.",
            "example": false
          }
        },
        "example": {
          "id": "ABCD",
          "etternavn": "Solberg",
          "fornavn": "Erna",
          "fulltNavn": "Erna Solberg",
          "foedselsdato": "1961-02-24T00:00:00.000Z",
          "kjoenn": "kvinne",
          "partiId": "H",
          "fylkeId": "HO",
          "varaRepresentant": false
        }
      },
      "ConnectorSkatteetatenTaxSummary": {
        "type": "object",
        "title": "ConnectorSkatteetatenTaxSummary",
        "additionalProperties": false,
        "description": "Normalisert summert skattegrunnlag (aggregert inntekt, formue og beregnet skatt) for en virksomhet per inntektsår, fra Skatteetatens Maskinporten-API.",
        "required": [
          "identifier",
          "taxYear",
          "categories",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "identifier": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummer (9 siffer, ikke-numeriske tegn fjernet).",
            "example": "923609016"
          },
          "taxYear": {
            "type": "integer",
            "minimum": 2016,
            "description": "Inntektsår (skatteår) datasettet gjelder.",
            "example": 2024
          },
          "taxableIncome": {
            "type": [
              "number",
              "null"
            ],
            "description": "Heuristisk gjenkjent skattepliktig/alminnelig inntekt (NOK). Utelatt når ingen inntektskategori matcher.",
            "example": 1250000
          },
          "taxableWealth": {
            "type": [
              "number",
              "null"
            ],
            "description": "Heuristisk gjenkjent skattepliktig nettoformue (NOK). Utelatt når ingen formueskategori matcher.",
            "example": 4200000
          },
          "totalTax": {
            "type": [
              "number",
              "null"
            ],
            "description": "Heuristisk gjenkjent beregnet/fastsatt skatt (NOK). Utelatt når ingen skattekategori matcher.",
            "example": 312500
          },
          "categories": {
            "type": "array",
            "description": "Alle skattegrunnlag-linjer (tom hvis upstream ikke leverer poster). Full liste eksponeres for konsumenter som trenger detaljerte felt.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "value"
              ],
              "description": "Én skattekategori-linje fra summert skattegrunnlag.",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Skatteetatens tekniske navn på kategorien (faller tilbake til `kategori`, ellers `\"ukjent\"`).",
                  "example": "alminneligInntekt"
                },
                "value": {
                  "type": "number",
                  "description": "Beløp for kategorien (NOK).",
                  "example": 1250000
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "Skatteetaten Summert skattegrunnlag"
            ],
            "description": "Proveniens (#74 explainability) — fast kilde-streng.",
            "example": "Skatteetaten Summert skattegrunnlag"
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Tidspunkt for henting/normalisering (ISO-8601 UTC).",
            "example": "2026-06-24T10:15:00.000Z"
          }
        },
        "example": {
          "identifier": "923609016",
          "taxYear": 2024,
          "taxableIncome": 1250000,
          "taxableWealth": 4200000,
          "totalTax": 312500,
          "categories": [
            {
              "name": "alminneligInntekt",
              "value": 1250000
            },
            {
              "name": "nettoformue",
              "value": 4200000
            },
            {
              "name": "beregnetSkatt",
              "value": 312500
            }
          ],
          "source": "Skatteetaten Summert skattegrunnlag",
          "fetchedAt": "2026-06-24T10:15:00.000Z"
        }
      },
      "ConnectorWikidataEntity": {
        "type": "object",
        "title": "ConnectorWikidataEntity",
        "additionalProperties": false,
        "description": "Normalisert Wikidata-entitet (label, beskrivelse, aliaser, claims) hentet på QID via wbgetentities.",
        "required": [
          "id",
          "aliases",
          "claims",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^Q[1-9][0-9]*$",
            "description": "Wikidata-QID for entiteten (tom streng om upstream utelot `id`).",
            "example": "Q4830453"
          },
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Beste tilgjengelige etikett i foretrukket språk; null når entiteten ikke har etikett på noe språk.",
            "example": "business"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kort beskrivelse i samme språk som `label` der mulig; null når den mangler på alle språk.",
            "example": "organization involved in commercial, industrial, or professional activity"
          },
          "lang": {
            "type": [
              "string",
              "null"
            ],
            "description": "Faktisk språk (BCP-47-kode) på `label`/`description` (#4230). Styres av `?lang` (no/en/sv …); default «no». null når entiteten mangler tekst på alle språk.",
            "example": "no"
          },
          "aliases": {
            "type": "array",
            "description": "Alternative navn fra de foretrukne språkene (tom om ingen).",
            "items": {
              "type": "string"
            },
            "example": [
              "company",
              "firm"
            ]
          },
          "claims": {
            "type": "object",
            "description": "Property-ID (P-nummer) → liste av råverdier i string-form. Wikibase- entity-verdier forkortes til QID, tid/mengde/monolingual gjøres om til string. Tom om entiteten ikke har claims.",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": {
              "P31": [
                "Q8187769"
              ],
              "P856": [
                "https://example.com"
              ]
            }
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Lenke til entitetens Wikidata-side.",
            "example": "https://www.wikidata.org/wiki/Q4830453"
          }
        },
        "example": {
          "id": "Q4830453",
          "label": "business",
          "description": "organization involved in commercial, industrial, or professional activity",
          "lang": "en",
          "aliases": [
            "company",
            "firm"
          ],
          "claims": {
            "P31": [
              "Q8187769"
            ],
            "P856": [
              "https://example.com"
            ]
          },
          "url": "https://www.wikidata.org/wiki/Q4830453"
        }
      },
      "ConnectorGleifLeiRecord": {
        "type": "object",
        "title": "ConnectorGleifLeiRecord",
        "additionalProperties": false,
        "description": "Normalisert LEI-record fra GLEIF (Global Legal Entity Identifier Foundation). Alle skalarfelt utenom `lei` og `address` kan være null når GLEIF utelater dem.",
        "required": [
          "lei",
          "address"
        ],
        "properties": {
          "lei": {
            "type": "string",
            "pattern": "^[0-9A-Z]{18}[0-9]{2}$",
            "description": "ISO 17442 Legal Entity Identifier (20 tegn, siste 2 er kontrollsiffer).",
            "example": "5967007LIEEXZXHKQU17"
          },
          "legalName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Registrert juridisk navn.",
            "example": "Equinor ASA"
          },
          "jurisdiction": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 3166-1 alpha-2-jurisdiksjon for registrering.",
            "example": "NO"
          },
          "registeredAs": {
            "type": [
              "string",
              "null"
            ],
            "description": "Registreringsnummer i nasjonalt foretaksregister (f.eks. orgnr).",
            "example": "923609016"
          },
          "address": {
            "type": "object",
            "additionalProperties": false,
            "description": "Juridisk adresse. Alltid til stede; underfelt kan være tomme/null.",
            "required": [
              "lines",
              "city",
              "country",
              "postalCode"
            ],
            "properties": {
              "lines": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Adresselinjer (tom array hvis ukjent).",
                "example": [
                  "Forusbeen 50"
                ]
              },
              "city": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "STAVANGER"
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO 3166-1 alpha-2-landkode.",
                "example": "NO"
              },
              "postalCode": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "4035"
              }
            }
          },
          "entityStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Operasjonell status for entiteten i GLEIF.",
            "example": "ACTIVE"
          },
          "category": {
            "type": [
              "string",
              "null"
            ],
            "description": "Entitetskategori fra GLEIF (f.eks. GENERAL, FUND, BRANCH).",
            "example": "GENERAL"
          },
          "registrationStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Status på selve LEI-registreringen.",
            "example": "ISSUED"
          },
          "initialRegistrationDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tidspunkt for første LEI-registrering (ISO-8601).",
            "example": "2012-11-30T00:00:00.000Z"
          },
          "lastUpdateDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Siste oppdatering av recorden (ISO-8601).",
            "example": "2025-01-15T00:00:00.000Z"
          },
          "nextRenewalDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Neste fornyelsesfrist for LEI-en (ISO-8601).",
            "example": "2026-01-15T00:00:00.000Z"
          },
          "managingLou": {
            "type": [
              "string",
              "null"
            ],
            "description": "LEI til Local Operating Unit som forvalter recorden.",
            "example": "529900T8BM49AURSDO55"
          }
        },
        "example": {
          "lei": "5967007LIEEXZXHKQU17",
          "legalName": "Equinor ASA",
          "jurisdiction": "NO",
          "registeredAs": "923609016",
          "address": {
            "lines": [
              "Forusbeen 50"
            ],
            "city": "STAVANGER",
            "country": "NO",
            "postalCode": "4035"
          },
          "entityStatus": "ACTIVE",
          "category": "GENERAL",
          "registrationStatus": "ISSUED",
          "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
          "lastUpdateDate": "2025-01-15T00:00:00.000Z",
          "nextRenewalDate": "2026-01-15T00:00:00.000Z",
          "managingLou": "529900T8BM49AURSDO55"
        }
      },
      "ConnectorAltinnErEntity": {
        "type": "object",
        "title": "ConnectorAltinnErEntity",
        "additionalProperties": false,
        "description": "Normalisert organisasjonsenhet fra Altinn platform Register-API (Enhetsregisteret). Alle nøkler er alltid til stede; valgfrie verdier er null.",
        "required": [
          "orgNummer",
          "navn",
          "type",
          "slettet",
          "telefon",
          "epost",
          "nettside",
          "postAdresse",
          "forretningsAdresse",
          "status"
        ],
        "properties": {
          "orgNummer": {
            "type": "string",
            "pattern": "^\\d{9}$|^$",
            "description": "Organisasjonsnummer (9 siffer). Tom streng hvis upstream mangler feltet.",
            "example": "923609016"
          },
          "navn": {
            "type": "string",
            "description": "Organisasjonens navn. Tom streng hvis upstream mangler feltet.",
            "example": "EQUINOR ASA"
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Enhetstype (`type` eller `unitType` fra Altinn). Null hvis ukjent.",
            "example": "AS"
          },
          "slettet": {
            "type": "boolean",
            "description": "Om enheten er markert som slettet (defaulter til false).",
            "example": false
          },
          "telefon": {
            "type": [
              "string",
              "null"
            ],
            "description": "Telefon- eller mobilnummer. Null hvis ikke registrert.",
            "example": "51990000"
          },
          "epost": {
            "type": [
              "string",
              "null"
            ],
            "description": "E-postadresse. Null hvis ikke registrert.",
            "example": "post@equinor.com"
          },
          "nettside": {
            "type": [
              "string",
              "null"
            ],
            "description": "Internett-/nettsideadresse. Null hvis ikke registrert.",
            "example": "www.equinor.com"
          },
          "postAdresse": {
            "type": "object",
            "additionalProperties": false,
            "description": "Postadresse. Feltene er null når Altinn ikke oppgir dem.",
            "required": [
              "adresse",
              "postnummer",
              "poststed"
            ],
            "properties": {
              "adresse": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Gate-/postadresse-linje.",
                "example": "Postboks 8500 Forus"
              },
              "postnummer": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "4035"
              },
              "poststed": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "STAVANGER"
              }
            }
          },
          "forretningsAdresse": {
            "type": "object",
            "additionalProperties": false,
            "description": "Forretningsadresse. Feltene er null når Altinn ikke oppgir dem.",
            "required": [
              "adresse",
              "postnummer",
              "poststed"
            ],
            "properties": {
              "adresse": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Gate-/besøksadresse-linje.",
                "example": "Forusbeen 50"
              },
              "postnummer": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "4035"
              },
              "poststed": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "STAVANGER"
              }
            }
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Enhetsstatus (`unitStatus` fra Altinn). Null hvis ukjent.",
            "example": "AKTIV"
          }
        },
        "example": {
          "orgNummer": "923609016",
          "navn": "EQUINOR ASA",
          "type": "AS",
          "slettet": false,
          "telefon": "51990000",
          "epost": "post@equinor.com",
          "nettside": "www.equinor.com",
          "postAdresse": {
            "adresse": "Postboks 8500 Forus",
            "postnummer": "4035",
            "poststed": "STAVANGER"
          },
          "forretningsAdresse": {
            "adresse": "Forusbeen 50",
            "postnummer": "4035",
            "poststed": "STAVANGER"
          },
          "status": "AKTIV"
        }
      },
      "ConnectorBrregKonkurs": {
        "type": "object",
        "title": "ConnectorBrregKonkurs",
        "additionalProperties": false,
        "description": "Konkursoppføring for ett organisasjonsnummer fra Brreg Enhetsregisteret (konkurs=true). `data` er en liste med nøyaktig ett kanonisk konkurs-objekt; 404 returneres hvis selskapet ikke er registrert konkurs.",
        "required": [
          "data",
          "page"
        ],
        "properties": {
          "data": {
            "type": "array",
            "description": "Kanoniske konkursoppføringer (for /{orgnr} alltid nøyaktig ett element).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "title": "CanonicalKonkurs",
              "description": "Normalisert konkurs-entitet (`normalizeKonkurs`). Alle felt er nullable — Enhetsregisteret utelater det som mangler, og enkelte felt (boRef, bostyrer) er ikke lenger tilgjengelig etter migreringen.",
              "required": [
                "boRef",
                "orgnr",
                "navn",
                "aapningsDato",
                "behandlingstype",
                "status",
                "rettskrets",
                "bostyrer",
                "ansatteBerort",
                "naeringskode",
                "naeringskodeBeskrivelse",
                "stiftelsesdato",
                "sisteEndring"
              ],
              "properties": {
                "boRef": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Bo-referanse. Alltid null etter migrering til Enhetsregisteret (ikke eksponert der).",
                  "example": null
                },
                "orgnr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^\\d{9}$",
                  "description": "Organisasjonsnummer (9 siffer).",
                  "example": "923609016"
                },
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Selskapsnavn.",
                  "example": "EKSEMPEL AS"
                },
                "aapningsDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Konkursåpningsdato (ISO-8601, fra `konkursdato`).",
                  "example": "2026-03-14"
                },
                "behandlingstype": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "KONKURSBEHANDLING",
                    null
                  ],
                  "description": "Behandlingstype. KONKURSBEHANDLING når enheten er registrert konkurs (raw.konkurs===true).",
                  "example": "KONKURSBEHANDLING"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "konkurs",
                    null
                  ],
                  "description": "Konkursstatus — \"konkurs\" når raw.konkurs===true, ellers null.",
                  "example": "konkurs"
                },
                "rettskrets": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Rettskrets — utledet fra forretningsadressens kommune.",
                  "example": "OSLO"
                },
                "bostyrer": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "title": "CanonicalBostyrer",
                  "description": "Bostyrer-informasjon. Alltid null etter migrering til Enhetsregisteret (ikke eksponert der).",
                  "required": [
                    "navn",
                    "advokatOrgnr"
                  ],
                  "properties": {
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Bostyrers navn.",
                      "example": "Ola Nordmann"
                    },
                    "advokatOrgnr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^\\d{9}$",
                      "description": "Organisasjonsnummer for bostyrers advokatfirma.",
                      "example": "987654321"
                    }
                  },
                  "example": null
                },
                "ansatteBerort": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Antall ansatte berørt — proxy fra Enhetsregisterets `antallAnsatte`.",
                  "example": 12
                },
                "naeringskode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "NACE-næringskode (fra `naeringskode1.kode`).",
                  "example": "47.111"
                },
                "naeringskodeBeskrivelse": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Tekstlig beskrivelse av næringskoden.",
                  "example": "Butikkhandel med bredt vareutvalg med hovedvekt på nærings- og nytelsesmidler"
                },
                "stiftelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Stiftelsesdato (ISO-8601).",
                  "example": "2010-06-01"
                },
                "sisteEndring": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dato for siste endring (ISO-8601). Prioriterer `sisteEndring`, faller tilbake til `konkursdato`.",
                  "example": "2026-03-14"
                }
              }
            }
          },
          "page": {
            "type": "object",
            "additionalProperties": false,
            "title": "PageMeta",
            "description": "Pagineringsmetadata. For /{orgnr} alltid ett enkelt element.",
            "required": [
              "size",
              "totalElements",
              "totalPages",
              "number"
            ],
            "properties": {
              "size": {
                "type": "integer",
                "minimum": 0,
                "description": "Antall elementer på siden.",
                "example": 1
              },
              "totalElements": {
                "type": "integer",
                "minimum": 0,
                "description": "Totalt antall treff.",
                "example": 1
              },
              "totalPages": {
                "type": "integer",
                "minimum": 0,
                "description": "Totalt antall sider.",
                "example": 1
              },
              "number": {
                "type": "integer",
                "minimum": 0,
                "description": "Gjeldende sideindeks (0-basert).",
                "example": 0
              }
            }
          }
        },
        "example": {
          "data": [
            {
              "boRef": null,
              "orgnr": "923609016",
              "navn": "EKSEMPEL AS",
              "aapningsDato": "2026-03-14",
              "behandlingstype": "KONKURSBEHANDLING",
              "status": "konkurs",
              "rettskrets": "OSLO",
              "bostyrer": null,
              "ansatteBerort": 12,
              "naeringskode": "47.111",
              "naeringskodeBeskrivelse": "Butikkhandel med bredt vareutvalg med hovedvekt på nærings- og nytelsesmidler",
              "stiftelsesdato": "2010-06-01",
              "sisteEndring": "2026-03-14"
            }
          ],
          "page": {
            "size": 1,
            "totalElements": 1,
            "totalPages": 1,
            "number": 0
          }
        }
      },
      "ConnectorFrivillighetsregisteretOrg": {
        "type": "object",
        "title": "ConnectorFrivillighetsregisteretOrg",
        "additionalProperties": false,
        "description": "Én frivillig organisasjon slått opp på org.nr i Frivillighetsregisteret.",
        "required": [
          "organisasjonsnummer",
          "frivilligOrganisasjonsstatus",
          "kontonummer",
          "innfoertDato",
          "foersteGangInnfoert",
          "grasrotandel",
          "regnskapsrapportering",
          "vedtekter",
          "icnpoKategorier",
          "paategninger",
          "source"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "Brønnøysundregistrene — Frivillighetsregisteret"
            ],
            "description": "Proveniens-etikett (#74 explainability). Konstant SOURCE_LABEL fra normalize.ts.",
            "example": "Brønnøysundregistrene — Frivillighetsregisteret"
          },
          "organisasjonsnummer": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummer — nøyaktig 9 siffer.",
            "example": "970208922"
          },
          "frivilligOrganisasjonsstatus": {
            "type": "string",
            "description": "Registreringsstatus i Frivillighetsregisteret.",
            "example": "REGISTRERT"
          },
          "kontonummer": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kontonummer for grasrotandel-utbetaling. `null` hvis ikke utfylt.",
            "example": "12345678901"
          },
          "innfoertDato": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dato organisasjonen sist ble innført i registeret (ISO-8601). `null` hvis ikke satt.",
            "example": "2020-03-15"
          },
          "foersteGangInnfoert": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dato organisasjonen første gang ble innført (ISO-8601). `null` hvis ikke satt.",
            "example": "2009-01-01"
          },
          "grasrotandel": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Grasrotandel-status. `null` hvis upstream ikke har data.",
            "required": [
              "deltarI",
              "utestengelsesperiode"
            ],
            "properties": {
              "deltarI": {
                "type": "boolean",
                "description": "Om organisasjonen deltar i grasrotandel-ordningen.",
                "example": true
              },
              "utestengelsesperiode": {
                "description": "Eventuell utestengelsesperiode (opak upstream-verdi). Typisk `null`.",
                "nullable": true,
                "example": null
              }
            }
          },
          "regnskapsrapportering": {
            "description": "Regnskapsrapportering (opak upstream-verdi, ikke videre normalisert). `null` hvis ikke utfylt.",
            "nullable": true,
            "example": null
          },
          "vedtekter": {
            "description": "Vedtekter (opak upstream-verdi, ikke videre normalisert). `null` hvis ikke utfylt.",
            "nullable": true,
            "example": null
          },
          "icnpoKategorier": {
            "type": "array",
            "description": "ICNPO-kategorier, beriket med norske navn der upstream mangler `navn`. Tom array hvis ingen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én ICNPO-kategori (International Classification of Non-Profit Organizations).",
              "required": [
                "kategori",
                "icnpoNummer",
                "navn",
                "rekkefoelge"
              ],
              "properties": {
                "kategori": {
                  "type": "string",
                  "description": "Enum-streng fra upstream, f.eks. `ICNPOKategori.X`.",
                  "example": "ICNPOKategori.SOSIALE_TJENESTER"
                },
                "icnpoNummer": {
                  "type": "string",
                  "description": "4-sifret ICNPO-kode.",
                  "example": "4100"
                },
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Norsk kategorinavn. Beriket fra ICNPO-mapping når upstream ga `null`; kan fortsatt være `null` for ukjente koder.",
                  "example": "Sosiale tjenester"
                },
                "rekkefoelge": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Visningsrekkefølge.",
                  "example": 0
                },
                "_links": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "HAL-lenker for kategorien (valgfritt, opakt)."
                }
              }
            }
          },
          "paategninger": {
            "type": "array",
            "description": "Påtegninger på organisasjonen (opak upstream-struktur). Tom array hvis ingen.",
            "items": {},
            "example": []
          },
          "_links": {
            "type": "object",
            "additionalProperties": true,
            "description": "HAL-lenker fra upstream. Utelatt når upstream ikke ga noen.",
            "example": {
              "self": {
                "href": "https://data.brreg.no/frivillighetsregisteret/api/frivillige-organisasjoner/970208922"
              }
            }
          }
        },
        "example": {
          "source": "Brønnøysundregistrene — Frivillighetsregisteret",
          "organisasjonsnummer": "970208922",
          "frivilligOrganisasjonsstatus": "REGISTRERT",
          "kontonummer": "12345678901",
          "innfoertDato": "2020-03-15",
          "foersteGangInnfoert": "2009-01-01",
          "grasrotandel": {
            "deltarI": true,
            "utestengelsesperiode": null
          },
          "regnskapsrapportering": null,
          "vedtekter": null,
          "icnpoKategorier": [
            {
              "kategori": "ICNPOKategori.SOSIALE_TJENESTER",
              "icnpoNummer": "4100",
              "navn": "Sosiale tjenester",
              "rekkefoelge": 0
            }
          ],
          "paategninger": [],
          "_links": {
            "self": {
              "href": "https://data.brreg.no/frivillighetsregisteret/api/frivillige-organisasjoner/970208922"
            }
          }
        }
      },
      "ConnectorOsloBorsQuotes": {
        "type": "object",
        "title": "ConnectorOsloBorsQuotes",
        "additionalProperties": false,
        "description": "Historiske dagskurser (OHLCV-candles) for ett instrument på Oslo Børs. Definert kontrakt — serveres som live 200 når Euronext-upstream er nådd via Cloud NAT (#2763).",
        "required": [
          "ticker",
          "market",
          "from",
          "to",
          "candles",
          "source"
        ],
        "properties": {
          "ticker": {
            "type": "string",
            "pattern": "^[A-Z0-9.-]{1,12}$",
            "description": "Normalisert ticker (uppercase, 1–12 tegn — bokstaver, tall, punktum, bindestrek).",
            "example": "EQNR"
          },
          "market": {
            "type": "string",
            "description": "MIC-kode for markedsplass (Oslo Børs = XOSL).",
            "example": "XOSL"
          },
          "from": {
            "type": "string",
            "format": "date",
            "description": "Startdato for kursperioden (ISO-8601).",
            "example": "2026-01-01"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "Sluttdato for kursperioden (ISO-8601).",
            "example": "2026-06-24"
          },
          "candles": {
            "type": "array",
            "description": "Dagskurser (OHLCV) for perioden, kronologisk. Tom ved ingen handelsdager.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "date",
                "open",
                "high",
                "low",
                "close",
                "volume"
              ],
              "description": "Én handelsdags OHLCV-kurs.",
              "properties": {
                "date": {
                  "type": "string",
                  "format": "date",
                  "description": "Handelsdato (ISO-8601).",
                  "example": "2026-06-23"
                },
                "open": {
                  "type": "number",
                  "description": "Åpningskurs.",
                  "example": 312.5
                },
                "high": {
                  "type": "number",
                  "description": "Høyeste kurs i løpet av dagen.",
                  "example": 318.2
                },
                "low": {
                  "type": "number",
                  "description": "Laveste kurs i løpet av dagen.",
                  "example": 310.1
                },
                "close": {
                  "type": "number",
                  "description": "Sluttkurs.",
                  "example": 316.8
                },
                "volume": {
                  "type": "number",
                  "description": "Omsatt volum (antall aksjer).",
                  "example": 4821300
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "oslo-bors"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "oslo-bors"
          }
        },
        "example": {
          "ticker": "EQNR",
          "market": "XOSL",
          "from": "2026-06-22",
          "to": "2026-06-23",
          "candles": [
            {
              "date": "2026-06-22",
              "open": 309,
              "high": 313.4,
              "low": 307.6,
              "close": 312.5,
              "volume": 3950100
            },
            {
              "date": "2026-06-23",
              "open": 312.5,
              "high": 318.2,
              "low": 310.1,
              "close": 316.8,
              "volume": 4821300
            }
          ],
          "source": "oslo-bors"
        }
      },
      "ConnectorSsbTableMetadata": {
        "type": "object",
        "title": "ConnectorSsbTableMetadata",
        "additionalProperties": false,
        "description": "Dimensjons-katalog for én SSB Statbank-tabell: variabler (dimensjoner), deres verdier (value-sets), kodelistereferanser og type. Brukes til celle-estimering og selection-validering før data-uttrekk.",
        "required": [
          "id",
          "variables"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]{2,8}$",
            "description": "Statbank tabell-ID (2-8 siffer; ledende nuller bevart).",
            "example": "07459"
          },
          "label": {
            "type": "string",
            "description": "Menneskelesbar tabelltittel. Mangler hvis SSB ikke populerer den.",
            "example": "Befolkning, etter region, kjønn, alder og år"
          },
          "source": {
            "type": "string",
            "description": "Kilde-attribusjon fra SSB selv (ikke injisert av web-laget). Typisk \"Statistisk sentralbyrå\". Mangler når SSB ikke oppgir den.",
            "example": "Statistisk sentralbyrå"
          },
          "updated": {
            "type": "string",
            "description": "Tidsstempel for siste oppdatering av tabellen (ISO-8601), hvis oppgitt.",
            "example": "2024-02-22T07:00:00Z"
          },
          "language": {
            "type": "string",
            "description": "Språkkode for label/verdi-tekstene SSB returnerte (no/en).",
            "example": "no"
          },
          "variableNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Navn på dimensjonene som tekst-array. SSB kan returnere en enkelt streng eller en streng-array; web-laget normaliserer alltid til array (#3085).",
            "example": [
              "region",
              "kjonn",
              "alder",
              "Tid"
            ]
          },
          "variables": {
            "type": "array",
            "description": "Dimensjons-katalog. Hver oppføring beskriver én variabel (dimensjon) i tabellen og dens tilgjengelige verdier.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "label"
              ],
              "description": "Én variabel (dimensjon) i tabellen.",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Variabel-/dimensjonskode (brukes som valueCodes-nøkkel i selection).",
                  "example": "Region"
                },
                "label": {
                  "type": "string",
                  "description": "Menneskelesbart navn på variabelen.",
                  "example": "region"
                },
                "type": {
                  "type": "string",
                  "description": "Variabeltype. PxWebApi v2 bruker hele ord (\"Geographic\", \"TimeVariable\", \"Contents\", \"Regular\"); eldre format brukte enkeltbokstaver. Aksepteres som fri streng.",
                  "example": "Geographic"
                },
                "values": {
                  "type": "array",
                  "description": "Tilgjengelige verdier for variabelen. Hvert element er enten et `{code, label}`-objekt (PxWebApi v2) eller en ren verdikode-streng (eldre v1-format) — union (#2972).",
                  "items": {
                    "oneOf": [
                      {
                        "type": "string",
                        "description": "Verdikode (eldre v1-format).",
                        "example": "0301"
                      },
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "code",
                          "label"
                        ],
                        "description": "Verdikode med tekst (PxWebApi v2-format).",
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "Verdikode (brukes i selection.valueCodes).",
                            "example": "0301"
                          },
                          "label": {
                            "type": "string",
                            "description": "Menneskelesbar verditekst.",
                            "example": "Oslo"
                          }
                        }
                      }
                    ]
                  }
                },
                "valueTexts": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Parallell tekst-array til `values` i eldre format der `values` er rene koder. Mangler i v2-objektformatet.",
                  "example": [
                    "Oslo",
                    "Bergen"
                  ]
                },
                "elimination": {
                  "type": "boolean",
                  "description": "Om variabelen kan elimineres (aggregeres bort) i et uttrekk.",
                  "example": false
                },
                "time": {
                  "type": "boolean",
                  "description": "Om variabelen er tids-dimensjonen.",
                  "example": true
                },
                "codeList": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Referanse til en delt kodeliste (vs_-id) hvis variabelen bruker en. PxWebApi v2 returnerer null for variabler uten kodeliste (#3085).",
                  "example": "vs_Kommun"
                }
              }
            }
          }
        },
        "example": {
          "id": "07459",
          "label": "Befolkning, etter region, kjønn, alder og år",
          "source": "Statistisk sentralbyrå",
          "updated": "2024-02-22T07:00:00Z",
          "language": "no",
          "variableNames": [
            "region",
            "kjonn",
            "alder",
            "Tid"
          ],
          "variables": [
            {
              "id": "Region",
              "label": "region",
              "type": "Geographic",
              "elimination": true,
              "codeList": "vs_Kommun",
              "values": [
                {
                  "code": "0301",
                  "label": "Oslo"
                },
                {
                  "code": "4601",
                  "label": "Bergen"
                }
              ]
            },
            {
              "id": "Kjonn",
              "label": "kjønn",
              "type": "Regular",
              "elimination": true,
              "codeList": null,
              "values": [
                {
                  "code": "1",
                  "label": "Menn"
                },
                {
                  "code": "2",
                  "label": "Kvinner"
                }
              ]
            },
            {
              "id": "Tid",
              "label": "år",
              "type": "TimeVariable",
              "time": true,
              "elimination": false,
              "codeList": null,
              "values": [
                {
                  "code": "2023",
                  "label": "2023"
                },
                {
                  "code": "2024",
                  "label": "2024"
                }
              ]
            }
          ]
        }
      },
      "ConnectorBrregProfil": {
        "type": "object",
        "title": "ConnectorBrregProfil",
        "additionalProperties": false,
        "description": "Aggregert selskapsprofil fra Brønnøysundregistrene: basisinfo (enhet), styre/ledelse (roller) og siste regnskaps-nøkkeltall. Partiell suksess er OK — enkeltkilder kan være null med detaljer i `_sources`.",
        "required": [
          "orgnr",
          "enhet",
          "roller",
          "sisteRegnskap",
          "_sources",
          "_generatedAt"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummeret profilen ble slått opp på.",
            "example": "923609016"
          },
          "enhet": {
            "description": "Normalisert Brreg-basisinfo (NormalizedBrregEnhet). Null hvis Brreg-kilden feilet (ikke ved not_found — da returnerer ruten 404).",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "companyKey",
                  "country",
                  "identifiers",
                  "legalName",
                  "status",
                  "updatedAt",
                  "source"
                ],
                "properties": {
                  "companyKey": {
                    "type": "string",
                    "description": "Kanonisk selskapsnøkkel (land + orgnr).",
                    "example": "NO-923609016"
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "NO"
                    ],
                    "example": "NO"
                  },
                  "identifiers": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "country",
                      "orgnr"
                    ],
                    "properties": {
                      "country": {
                        "type": "string",
                        "enum": [
                          "NO"
                        ],
                        "example": "NO"
                      },
                      "orgnr": {
                        "type": "string",
                        "pattern": "^\\d{9}$",
                        "example": "923609016"
                      }
                    }
                  },
                  "legalName": {
                    "type": "string",
                    "description": "Registrert foretaksnavn.",
                    "example": "EQUINOR ASA"
                  },
                  "status": {
                    "type": "string",
                    "description": "Utledet status (f.eks. aktiv, konkurs, avviklet).",
                    "example": "aktiv"
                  },
                  "organizationForm": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "code",
                      "description"
                    ],
                    "description": "Organisasjonsform. Utelatt hvis ukjent.",
                    "properties": {
                      "code": {
                        "type": "string",
                        "example": "ASA"
                      },
                      "description": {
                        "type": "string",
                        "example": "Allmennaksjeselskap"
                      }
                    }
                  },
                  "industryCode": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "code",
                      "description"
                    ],
                    "description": "Næringskode (NACE). Utelatt hvis ukjent.",
                    "properties": {
                      "code": {
                        "type": "string",
                        "example": "06.100"
                      },
                      "description": {
                        "type": "string",
                        "example": "Utvinning av råolje"
                      }
                    }
                  },
                  "address": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Forretningsadresse. Felt utelates når de mangler.",
                    "properties": {
                      "street": {
                        "type": "string",
                        "example": "Forusbeen 50"
                      },
                      "postalCode": {
                        "type": "string",
                        "example": "4035"
                      },
                      "city": {
                        "type": "string",
                        "example": "STAVANGER"
                      },
                      "municipality": {
                        "type": "string",
                        "example": "STAVANGER"
                      },
                      "municipalityCode": {
                        "type": "string",
                        "example": "1103"
                      },
                      "country": {
                        "type": "string",
                        "example": "Norge"
                      }
                    }
                  },
                  "foundedDate": {
                    "type": "string",
                    "description": "Stiftelsesdato (ISO-8601). Utelatt hvis ukjent.",
                    "example": "1972-07-14"
                  },
                  "registrationDate": {
                    "type": "string",
                    "description": "Registreringsdato i Brreg (ISO-8601). Utelatt hvis ukjent.",
                    "example": "1995-08-09"
                  },
                  "employeeCount": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Antall ansatte. Utelatt hvis ukjent.",
                    "example": 21000
                  },
                  "updatedAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Tidspunkt enheten sist ble oppdatert (ISO-8601, serialisert fra Date).",
                    "example": "2026-06-20T09:00:00.000Z"
                  },
                  "source": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "system",
                      "fetchedAt"
                    ],
                    "description": "Proveniens (#74 explainability).",
                    "properties": {
                      "system": {
                        "type": "string",
                        "enum": [
                          "brreg"
                        ],
                        "example": "brreg"
                      },
                      "fetchedAt": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Henttidspunkt (ISO-8601, serialisert fra Date).",
                        "example": "2026-06-24T12:00:00.000Z"
                      }
                    }
                  }
                }
              }
            ]
          },
          "roller": {
            "description": "Normaliserte rollegrupper / styre & ledelse (NormalizedBrregRoller). Null hvis roller-kilden feilet eller ga not_found.",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "organisasjonsnummer",
                  "rollegrupper",
                  "harAutorisertData"
                ],
                "properties": {
                  "organisasjonsnummer": {
                    "type": "string",
                    "pattern": "^\\d{9}$",
                    "example": "923609016"
                  },
                  "harAutorisertData": {
                    "type": "boolean",
                    "description": "Om autorisert (full) rolledata ble brukt.",
                    "example": false
                  },
                  "rollegrupper": {
                    "type": "array",
                    "description": "Rollegrupper (f.eks. styre, daglig leder). Tom ved ingen treff.",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "typeKode",
                        "typeBeskrivelse",
                        "sisteEndringsDato",
                        "roller"
                      ],
                      "properties": {
                        "typeKode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Rollegruppe-kode.",
                          "example": "STYR"
                        },
                        "typeBeskrivelse": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "example": "Styre"
                        },
                        "sisteEndringsDato": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Dato for siste endring i gruppen (ISO-dato).",
                          "example": "2025-04-30"
                        },
                        "roller": {
                          "type": "array",
                          "description": "Rolleinnehavere i gruppen.",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "person",
                              "enhet",
                              "fratraadt",
                              "rekkefolge",
                              "inntredelsesdato",
                              "fratredelsesdato"
                            ],
                            "properties": {
                              "person": {
                                "description": "Personinnehaver. Null hvis innehaver er en enhet.",
                                "oneOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "required": [
                                      "navn",
                                      "fodselsdato",
                                      "fodselsnummer",
                                      "erDoed"
                                    ],
                                    "properties": {
                                      "navn": {
                                        "type": [
                                          "string",
                                          "null"
                                        ],
                                        "example": "Ola Nordmann"
                                      },
                                      "fodselsdato": {
                                        "type": [
                                          "string",
                                          "null"
                                        ],
                                        "description": "Fødselsdato (ISO-dato) hvis tilgjengelig.",
                                        "example": "1965-03-12"
                                      },
                                      "fodselsnummer": {
                                        "type": [
                                          "string",
                                          "null"
                                        ],
                                        "description": "Fødselsnummer — kun ved autorisert data, ellers null.",
                                        "example": null
                                      },
                                      "erDoed": {
                                        "type": "boolean",
                                        "example": false
                                      }
                                    }
                                  }
                                ]
                              },
                              "enhet": {
                                "description": "Enhetsinnehaver. Null hvis innehaver er en person.",
                                "oneOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "required": [
                                      "organisasjonsnummer",
                                      "navn"
                                    ],
                                    "properties": {
                                      "organisasjonsnummer": {
                                        "type": [
                                          "string",
                                          "null"
                                        ],
                                        "example": "987654321"
                                      },
                                      "navn": {
                                        "type": [
                                          "string",
                                          "null"
                                        ],
                                        "example": "EKSEMPEL HOLDING AS"
                                      }
                                    }
                                  }
                                ]
                              },
                              "fratraadt": {
                                "type": "boolean",
                                "description": "Om innehaveren har fratrådt rollen.",
                                "example": false
                              },
                              "rekkefolge": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "description": "Sorteringsrekkefølge innen gruppen.",
                                "example": 1
                              },
                              "inntredelsesdato": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Dato for tiltreden av rollen (ISO-dato).",
                                "example": "2020-05-12"
                              },
                              "fratredelsesdato": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Dato for fratreden (ISO-dato). Null hvis aktiv.",
                                "example": null
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            ]
          },
          "sisteRegnskap": {
            "description": "Nøkkeltall fra siste tilgjengelige regnskapsår (RegnskapSummary). Null hvis regnskaps-kilden feilet eller selskapet ikke har regnskap.",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "orgnr",
                  "virksomhetNavn",
                  "år",
                  "driftsinntekter",
                  "aarsresultat",
                  "sumEgenkapital",
                  "sumGjeld",
                  "sumEiendeler",
                  "egenkapitalProsent",
                  "gjeldsgrad",
                  "driftsmarginPct"
                ],
                "properties": {
                  "orgnr": {
                    "type": "string",
                    "pattern": "^\\d{9}$",
                    "example": "923609016"
                  },
                  "virksomhetNavn": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "EQUINOR ASA"
                  },
                  "år": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "description": "Regnskapsår (fra tilDato eller fraDato).",
                    "example": 2024
                  },
                  "driftsinntekter": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Driftsinntekter (revenue), i hele kroner.",
                    "example": 1234567000
                  },
                  "aarsresultat": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Årsresultat (net income).",
                    "example": 98765000
                  },
                  "sumEgenkapital": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 500000000
                  },
                  "sumGjeld": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 300000000
                  },
                  "sumEiendeler": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 800000000
                  },
                  "egenkapitalProsent": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "sumEgenkapital / sumEiendeler. Null hvis ikke beregningsbar.",
                    "example": 62.5
                  },
                  "gjeldsgrad": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "sumGjeld / sumEgenkapital. Null hvis ikke beregningsbar.",
                    "example": 0.6
                  },
                  "driftsmarginPct": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "aarsresultat / driftsinntekter × 100. Null hvis ikke beregningsbar.",
                    "example": 8
                  }
                }
              }
            ]
          },
          "_sources": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "brreg",
              "roller",
              "regnskap"
            ],
            "description": "Per-kilde proveniens og status (#74 explainability).",
            "properties": {
              "brreg": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "status",
                  "latencyMs",
                  "cacheHit"
                ],
                "description": "Status for én underliggende kilde.",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "error",
                      "not_found",
                      "not_configured"
                    ],
                    "example": "ok"
                  },
                  "latencyMs": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Latens for kildens kall i millisekunder.",
                    "example": 142
                  },
                  "cacheHit": {
                    "type": "boolean",
                    "example": true
                  },
                  "error": {
                    "type": "string",
                    "description": "Feilmelding. Til stede kun når status er error.",
                    "example": "Ukjent feil"
                  }
                }
              },
              "roller": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "status",
                  "latencyMs",
                  "cacheHit"
                ],
                "description": "Status for én underliggende kilde.",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "error",
                      "not_found",
                      "not_configured"
                    ],
                    "example": "ok"
                  },
                  "latencyMs": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Latens for kildens kall i millisekunder.",
                    "example": 142
                  },
                  "cacheHit": {
                    "type": "boolean",
                    "example": true
                  },
                  "error": {
                    "type": "string",
                    "description": "Feilmelding. Til stede kun når status er error.",
                    "example": "Ukjent feil"
                  }
                }
              },
              "regnskap": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "status",
                  "latencyMs",
                  "cacheHit"
                ],
                "description": "Status for én underliggende kilde.",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "error",
                      "not_found",
                      "not_configured"
                    ],
                    "example": "ok"
                  },
                  "latencyMs": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Latens for kildens kall i millisekunder.",
                    "example": 142
                  },
                  "cacheHit": {
                    "type": "boolean",
                    "example": true
                  },
                  "error": {
                    "type": "string",
                    "description": "Feilmelding. Til stede kun når status er error.",
                    "example": "Ukjent feil"
                  }
                }
              }
            }
          },
          "_generatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Tidspunkt profilen ble aggregert (ISO-8601).",
            "example": "2026-06-24T12:00:00.123Z"
          }
        },
        "$defs": {
          "SourceMeta": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "latencyMs",
              "cacheHit"
            ],
            "description": "Status for én underliggende kilde.",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "ok",
                  "error",
                  "not_found",
                  "not_configured"
                ],
                "example": "ok"
              },
              "latencyMs": {
                "type": "integer",
                "minimum": 0,
                "description": "Latens for kildens kall i millisekunder.",
                "example": 142
              },
              "cacheHit": {
                "type": "boolean",
                "example": true
              },
              "error": {
                "type": "string",
                "description": "Feilmelding. Til stede kun når status er error.",
                "example": "Ukjent feil"
              }
            }
          }
        },
        "example": {
          "orgnr": "923609016",
          "enhet": {
            "companyKey": "NO-923609016",
            "country": "NO",
            "identifiers": {
              "country": "NO",
              "orgnr": "923609016"
            },
            "legalName": "EQUINOR ASA",
            "status": "aktiv",
            "organizationForm": {
              "code": "ASA",
              "description": "Allmennaksjeselskap"
            },
            "industryCode": {
              "code": "06.100",
              "description": "Utvinning av råolje"
            },
            "address": {
              "street": "Forusbeen 50",
              "postalCode": "4035",
              "city": "STAVANGER",
              "municipality": "STAVANGER",
              "municipalityCode": "1103",
              "country": "Norge"
            },
            "foundedDate": "1972-07-14",
            "registrationDate": "1995-08-09",
            "employeeCount": 21000,
            "updatedAt": "2026-06-20T09:00:00.000Z",
            "source": {
              "system": "brreg",
              "fetchedAt": "2026-06-24T12:00:00.000Z"
            }
          },
          "roller": {
            "organisasjonsnummer": "923609016",
            "harAutorisertData": false,
            "rollegrupper": [
              {
                "typeKode": "STYR",
                "typeBeskrivelse": "Styre",
                "sisteEndringsDato": "2025-04-30",
                "roller": [
                  {
                    "person": {
                      "navn": "Ola Nordmann",
                      "fodselsdato": "1965-03-12",
                      "fodselsnummer": null,
                      "erDoed": false
                    },
                    "enhet": null,
                    "fratraadt": false,
                    "rekkefolge": 1,
                    "inntredelsesdato": "2020-05-12",
                    "fratredelsesdato": null
                  }
                ]
              }
            ]
          },
          "sisteRegnskap": {
            "orgnr": "923609016",
            "virksomhetNavn": "EQUINOR ASA",
            "år": 2024,
            "driftsinntekter": 1234567000,
            "aarsresultat": 98765000,
            "sumEgenkapital": 500000000,
            "sumGjeld": 300000000,
            "sumEiendeler": 800000000,
            "egenkapitalProsent": 62.5,
            "gjeldsgrad": 0.6,
            "driftsmarginPct": 8
          },
          "_sources": {
            "brreg": {
              "status": "ok",
              "latencyMs": 142,
              "cacheHit": true
            },
            "roller": {
              "status": "ok",
              "latencyMs": 88,
              "cacheHit": false
            },
            "regnskap": {
              "status": "ok",
              "latencyMs": 210,
              "cacheHit": false
            }
          },
          "_generatedAt": "2026-06-24T12:00:00.123Z"
        }
      },
      "ConnectorBrregRegnskap": {
        "type": "array",
        "title": "ConnectorBrregRegnskap",
        "description": "Liste over årsregnskap for ett organisasjonsnummer (tom array hvis ingen regnskap). Hvert element er ett normalisert regnskap fra Brreg Regnskapsregisteret.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "description": "Ett normalisert årsregnskap (`NormalizedRegnskap`). De fleste felt er nullable fordi Brreg utelater data som mangler; objekt-felt defaulter til `{}` når upstream ikke leverer dem.",
          "required": [
            "id",
            "journalnr",
            "regnskapstype",
            "regnskapDokumenttype",
            "orgnr",
            "virksomhetNavn",
            "organisasjonsform",
            "periode",
            "valuta",
            "revisjon",
            "egenkapitalGjeld",
            "eiendeler",
            "resultatregnskapResultat",
            "financials",
            "raw"
          ],
          "properties": {
            "id": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Regnskaps-ID fra Brreg. Null hvis upstream mangler `id`.",
              "example": 7654321
            },
            "journalnr": {
              "type": [
                "string",
                "null"
              ],
              "description": "Journalnummer for innsendingen. Null hvis ikke oppgitt.",
              "example": "2024-12345"
            },
            "regnskapstype": {
              "type": [
                "string",
                "null"
              ],
              "description": "Regnskapstype fra Brreg, f.eks. `SELSKAP`, `KONSERN`/`KONSOLIDERT`. Null hvis ikke oppgitt.",
              "example": "SELSKAP"
            },
            "regnskapDokumenttype": {
              "type": [
                "string",
                "null"
              ],
              "description": "Dokumenttype for regnskapet. Null hvis ikke oppgitt.",
              "example": "ÅRSREGNSKAP"
            },
            "orgnr": {
              "type": [
                "string",
                "null"
              ],
              "description": "Organisasjonsnummer fra `virksomhet.organisasjonsnummer` (9 siffer). Null hvis upstream mangler virksomhet.",
              "pattern": "^\\d{9}$",
              "example": "923609016"
            },
            "virksomhetNavn": {
              "type": [
                "string",
                "null"
              ],
              "description": "Foretaksnavn fra `virksomhet.navn`. Null hvis ikke oppgitt.",
              "example": "EQUINOR ASA"
            },
            "organisasjonsform": {
              "type": [
                "string",
                "null"
              ],
              "description": "Organisasjonsform-kode fra `virksomhet.organisasjonsform`.",
              "example": "ASA"
            },
            "periode": {
              "type": "object",
              "additionalProperties": false,
              "description": "Regnskapsperioden (`regnskapsperiode`). Begge datoer kan være null.",
              "required": [
                "fraDato",
                "tilDato"
              ],
              "properties": {
                "fraDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Periodens startdato (ISO-8601). Null hvis ikke oppgitt.",
                  "example": "2023-01-01"
                },
                "tilDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Periodens sluttdato (ISO-8601). Null hvis ikke oppgitt.",
                  "example": "2023-12-31"
                }
              }
            },
            "valuta": {
              "type": [
                "string",
                "null"
              ],
              "description": "Rapporteringsvaluta (ISO 4217). Null hvis ikke oppgitt.",
              "pattern": "^[A-Z]{3}$",
              "example": "NOK"
            },
            "revisjon": {
              "type": "object",
              "additionalProperties": true,
              "description": "Revisjonsinformasjon fra Brreg, uendret struktur. Tomt objekt `{}` når upstream ikke leverer feltet.",
              "example": {
                "ikkeRevidertAarsregnskap": false
              }
            },
            "egenkapitalGjeld": {
              "type": "object",
              "additionalProperties": true,
              "description": "Egenkapital- og gjeldsstruktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
              "example": {
                "sumEgenkapitalGjeld": 1000000
              }
            },
            "eiendeler": {
              "type": "object",
              "additionalProperties": true,
              "description": "Eiendelsstruktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
              "example": {
                "sumEiendeler": 1000000
              }
            },
            "resultatregnskapResultat": {
              "type": "object",
              "additionalProperties": true,
              "description": "Resultatregnskap-struktur fra Brreg (nested), uendret. Tomt objekt `{}` når upstream mangler feltet.",
              "example": {
                "aarsresultat": 250000
              }
            },
            "financials": {
              "type": "object",
              "additionalProperties": false,
              "description": "Utledede kanoniske nøkkeltall (`CanonicalFinancialStatement`), søkt rekursivt ut av regnskapsstrukturen. Hver verdi er null hvis tallet ikke finnes.",
              "required": [
                "netIncome",
                "totalAssets",
                "totalLiabilitiesAndEquity"
              ],
              "properties": {
                "netIncome": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Årsresultat (`aarsresultat`/`ordinaertResultat`).",
                  "example": 250000
                },
                "totalAssets": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Sum eiendeler (`sumEiendeler`).",
                  "example": 1000000
                },
                "totalLiabilitiesAndEquity": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Sum egenkapital og gjeld (`sumEgenkapitalGjeld`).",
                  "example": 1000000
                }
              }
            },
            "raw": {
              "type": "object",
              "additionalProperties": true,
              "description": "Uendret originalstruktur fra Brreg (`RegnskapRaw`) for videre prosessering. Form varierer mellom flat og full respons.",
              "example": {
                "id": 7654321,
                "regnskapstype": "SELSKAP",
                "virksomhet": {
                  "organisasjonsnummer": "923609016",
                  "navn": "EQUINOR ASA"
                }
              }
            }
          }
        },
        "example": [
          {
            "id": 7654321,
            "journalnr": "2024-12345",
            "regnskapstype": "SELSKAP",
            "regnskapDokumenttype": "ÅRSREGNSKAP",
            "orgnr": "923609016",
            "virksomhetNavn": "EQUINOR ASA",
            "organisasjonsform": "ASA",
            "periode": {
              "fraDato": "2023-01-01",
              "tilDato": "2023-12-31"
            },
            "valuta": "NOK",
            "revisjon": {
              "ikkeRevidertAarsregnskap": false
            },
            "egenkapitalGjeld": {
              "sumEgenkapitalGjeld": 1000000
            },
            "eiendeler": {
              "sumEiendeler": 1000000
            },
            "resultatregnskapResultat": {
              "aarsresultat": 250000
            },
            "financials": {
              "netIncome": 250000,
              "totalAssets": 1000000,
              "totalLiabilitiesAndEquity": 1000000
            },
            "raw": {
              "id": 7654321,
              "regnskapstype": "SELSKAP",
              "virksomhet": {
                "organisasjonsnummer": "923609016",
                "navn": "EQUINOR ASA"
              }
            }
          }
        ]
      },
      "ConnectorDibkEnterprise": {
        "type": "object",
        "title": "ConnectorDibkEnterprise",
        "additionalProperties": false,
        "description": "Sentral godkjenning for ett byggforetak fra DiBK SGregisteret. Alle felt er alltid til stede etter normalisering, men ledd-verdier er nullbare når upstream utelater dem.",
        "required": [
          "orgnr",
          "name",
          "status",
          "approvalAreas",
          "address",
          "insured",
          "validFrom",
          "validTo"
        ],
        "properties": {
          "orgnr": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d{9}$",
            "description": "9-sifret organisasjonsnummer. Utledes fra `approval_certificate`-URL-en når upstream ikke har eget `orgnr`-felt. Null hvis ikke utledbar.",
            "example": "923609016"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Foretaksnavn slik SGregisteret oppgir det.",
            "example": "Eksempel Bygg AS"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Godkjenningsstatus. Enkeltoppslag mapper boolsk `approved` til `\"Godkjent\"`/`\"Ikke godkjent\"`; ellers videreføres status-strengen fra upstream. Null når status mangler.",
            "example": "Godkjent"
          },
          "approvalAreas": {
            "type": "array",
            "description": "Godkjenningsområder (funksjon × tiltaksklasse × fagområde). Tom liste hvis ingen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "functionCode",
                "functionDescription",
                "approvalClass",
                "approvalClassDescription",
                "discipline",
                "disciplineDescription"
              ],
              "description": "Ett godkjenningsområde. Hvert ledd er nullbart når upstream utelater det.",
              "properties": {
                "functionCode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Funksjonskode (ansvarsrett-funksjon).",
                  "example": "PRO"
                },
                "functionDescription": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Beskrivelse av funksjonen.",
                  "example": "Ansvarlig prosjekterende"
                },
                "approvalClass": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Tiltaksklasse.",
                  "example": "2"
                },
                "approvalClassDescription": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Beskrivelse av tiltaksklassen.",
                  "example": "Tiltaksklasse 2"
                },
                "discipline": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Fagområde-kode.",
                  "example": "BYGG"
                },
                "disciplineDescription": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Beskrivelse av fagområdet.",
                  "example": "Bygninger og installasjoner"
                }
              }
            }
          },
          "address": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Forretningsadresse (`businessaddress`) fra by-ID-/liste-svaret. Null når upstream ikke oppgir en adresse-blokk, eller når alle ledd er null.",
            "required": [
              "line1",
              "line2",
              "line3",
              "line4",
              "postalCode",
              "postalTown",
              "country"
            ],
            "properties": {
              "line1": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "Haslevollen 3"
              },
              "line2": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "line3": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "line4": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "postalCode": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "0579"
              },
              "postalTown": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "OSLO"
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "NO"
              }
            }
          },
          "insured": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Om foretaket har ansvarsforsikring (`additional_terms.liability_insurance`). Null når upstream ikke oppgir boolsk verdi.",
            "example": true
          },
          "validFrom": {
            "type": [
              "string",
              "null"
            ],
            "description": "Gyldig fra-dato for godkjenningen (slik upstream oppgir den).",
            "example": "2023-01-01"
          },
          "validTo": {
            "type": [
              "string",
              "null"
            ],
            "description": "Gyldig til-dato for godkjenningen (slik upstream oppgir den).",
            "example": "2026-01-01"
          }
        },
        "example": {
          "orgnr": "811600792",
          "name": "ELTERA AS",
          "status": "Godkjent",
          "approvalAreas": [
            {
              "functionCode": "PRO",
              "functionDescription": "Prosjekterende",
              "approvalClass": "2",
              "approvalClassDescription": "PBL 2016",
              "discipline": "PLEDESYS",
              "disciplineDescription": "Ledesystem"
            }
          ],
          "address": {
            "line1": "Haslevollen 3",
            "line2": null,
            "line3": null,
            "line4": null,
            "postalCode": "0579",
            "postalTown": "OSLO",
            "country": "NO"
          },
          "insured": false,
          "validFrom": null,
          "validTo": "2028-11-11"
        }
      },
      "ConnectorDkAarsrapporterRegnskab": {
        "type": "object",
        "title": "ConnectorDkAarsrapporterRegnskab",
        "additionalProperties": false,
        "description": "Regnskapsliste (innsendte årsrapporter) for ett dansk CVR-nummer fra Virk.dk Årsrapporter (Erhvervsstyrelsen). Nyeste regnskap først.",
        "required": [
          "cvr",
          "regnskaper",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "cvr": {
            "type": "string",
            "pattern": "^\\d{8}$",
            "description": "Dansk CVR-nummer (8 siffer) listen gjelder.",
            "example": "12345678"
          },
          "source": {
            "type": "string",
            "enum": [
              "dk-aarsrapporter"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "dk-aarsrapporter"
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO-8601-tidsstempel for når responsen ble bygget.",
            "example": "2026-06-24T10:15:00.000Z"
          },
          "regnskaper": {
            "type": "array",
            "description": "Normaliserte årsrapporter, nyeste først (tom ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én normalisert dansk årsrapport — kanonisk, flat form. Beløp i hele DKK.",
              "required": [
                "id",
                "periodeFra",
                "periodeTil",
                "omsetning",
                "resultatFoerSkat",
                "resultatEfterSkat",
                "egenkapital",
                "balansesum",
                "valuta",
                "offentliggjortDato"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Regnskaps-id (alfanumerisk med skilletegn).",
                  "example": "2024-001"
                },
                "periodeFra": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Regnskapsperiode start, ISO-dato.",
                  "example": "2024-01-01"
                },
                "periodeTil": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Regnskapsperiode slutt, ISO-dato.",
                  "example": "2024-12-31"
                },
                "omsetning": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Omsetning i hele DKK.",
                  "example": 12500000
                },
                "resultatFoerSkat": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Resultat før skatt i hele DKK.",
                  "example": 1800000
                },
                "resultatEfterSkat": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Resultat etter skatt i hele DKK.",
                  "example": 1400000
                },
                "egenkapital": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Egenkapital i hele DKK.",
                  "example": 5200000
                },
                "balansesum": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Balansesum i hele DKK.",
                  "example": 9800000
                },
                "valuta": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Rapporteringsvaluta (ISO 4217).",
                  "example": "DKK"
                },
                "offentliggjortDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Offentliggjøringsdato for årsrapporten, ISO-dato.",
                  "example": "2025-05-30"
                }
              }
            }
          }
        },
        "example": {
          "cvr": "12345678",
          "source": "dk-aarsrapporter",
          "fetchedAt": "2026-06-24T10:15:00.000Z",
          "regnskaper": [
            {
              "id": "2024-001",
              "periodeFra": "2024-01-01",
              "periodeTil": "2024-12-31",
              "omsetning": 12500000,
              "resultatFoerSkat": 1800000,
              "resultatEfterSkat": 1400000,
              "egenkapital": 5200000,
              "balansesum": 9800000,
              "valuta": "DKK",
              "offentliggjortDato": "2025-05-30"
            }
          ]
        }
      },
      "ConnectorEinnsynDocument": {
        "type": "object",
        "title": "ConnectorEinnsynDocument",
        "additionalProperties": false,
        "description": "Normalisert eInnsyn-journalpost (offentlig dokumentjournal). `id`, `tittel` og `publisher` er alltid satt (normaliseringen fyller fallback-verdier); øvrige metadatafelt er nullbare når eInnsyn ikke har dem.",
        "required": [
          "id",
          "tittel",
          "offentligTittel",
          "journaldato",
          "dokumentdato",
          "saksnummer",
          "journalpostnummer",
          "publisher",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "eInnsyn-journalpost-ID (`raw.id ?? raw.iri`). Tom streng hvis upstream mangler både `id` og `iri`.",
            "example": "jp_01j73abc4567def8901ghij"
          },
          "tittel": {
            "type": "string",
            "description": "Visningstittel (`tittel ?? offentligTittel ?? offentligTittelSensitiv`). Fallback `\"(uten tittel)\"` når ingen tittel finnes.",
            "example": "Søknad om tilskudd til kulturarrangement"
          },
          "offentligTittel": {
            "type": [
              "string",
              "null"
            ],
            "description": "Offentlig (sladdet) tittel direkte fra eInnsyn, eller null.",
            "example": "Søknad om tilskudd til kulturarrangement"
          },
          "journaldato": {
            "type": [
              "string",
              "null"
            ],
            "description": "Journalføringsdato (ISO-8601), eller null.",
            "example": "2025-03-14"
          },
          "dokumentdato": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dokumentets dato (`dokumentetsDato ?? dokumentdato`, ISO-8601), eller null.",
            "example": "2025-03-10"
          },
          "saksnummer": {
            "type": [
              "string",
              "null"
            ],
            "description": "Saksnummer journalposten tilhører, eller null.",
            "example": "2025/1234"
          },
          "journalpostnummer": {
            "type": [
              "string",
              "null"
            ],
            "description": "Løpenummer innenfor saken, stringifisert fra upstream (kan være tall), eller null.",
            "example": "3"
          },
          "publisher": {
            "type": "object",
            "additionalProperties": false,
            "description": "Publiserende organ. Alltid til stede; `navn` fyller fallback (`\"Ukjent organ\"`) når det ikke kan resolves.",
            "required": [
              "navn",
              "orgnummer"
            ],
            "properties": {
              "navn": {
                "type": "string",
                "description": "Organets navn, eller fallback `\"Ukjent organ\"`.",
                "example": "Kulturdepartementet"
              },
              "orgnummer": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Organisasjonsnummer for organet, eller null.",
                "example": "972417866"
              },
              "id": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "eInnsyn journalenhet-ID (#2529). Valgfri — utelates når den ikke er tilgjengelig.",
                "example": "enh_01j73xyz9876wvut5432srqp"
              },
              "publisherLink": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Lenke til organet på einnsyn.no, bygd fra journalenhet-ID (#2613). Valgfri — null/utelatt uten ID.",
                "example": "https://einnsyn.no/enheter/enh_01j73xyz9876wvut5432srqp"
              }
            }
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Offentlig einnsyn.no-visning av journalposten (foretrekker `slug`, ellers `id`/`iri`), eller null.",
            "example": "https://einnsyn.no/journalpost/sok-om-tilskudd-kulturarrangement"
          }
        },
        "example": {
          "id": "jp_01j73abc4567def8901ghij",
          "tittel": "Søknad om tilskudd til kulturarrangement",
          "offentligTittel": "Søknad om tilskudd til kulturarrangement",
          "journaldato": "2025-03-14",
          "dokumentdato": "2025-03-10",
          "saksnummer": "2025/1234",
          "journalpostnummer": "3",
          "publisher": {
            "navn": "Kulturdepartementet",
            "orgnummer": "972417866",
            "id": "enh_01j73xyz9876wvut5432srqp",
            "publisherLink": "https://einnsyn.no/enheter/enh_01j73xyz9876wvut5432srqp"
          },
          "url": "https://einnsyn.no/journalpost/sok-om-tilskudd-kulturarrangement"
        }
      },
      "ConnectorDoffinNotice": {
        "type": "object",
        "title": "ConnectorDoffinNotice",
        "additionalProperties": false,
        "description": "Én norsk offentlig anskaffelseskunngjøring fra Doffin (DFØ APIM), kanonisk normalisert. Felt utenom noticeId/cpvCodes er valgfrie fordi kunngjøringstyper (forhåndsvarsel, konkurransegrunnlag, kontraktstildeling) populerer ulikt.",
        "required": [
          "noticeId",
          "cpvCodes"
        ],
        "properties": {
          "noticeId": {
            "type": "string",
            "description": "Doffin-intern notice-ID (oppslagsnøkkel for {id}).",
            "example": "2024-123456"
          },
          "publicationNumber": {
            "type": "string",
            "description": "Offisielt publikasjonsnummer.",
            "example": "2024/S 045-123456"
          },
          "title": {
            "type": "string",
            "description": "Kunngjøringens tittel.",
            "example": "Rammeavtale renholdstjenester"
          },
          "publishedAt": {
            "type": "string",
            "description": "Publiseringstidspunkt (ISO-8601).",
            "example": "2024-03-01T09:00:00Z"
          },
          "deadlineAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tilbudsfrist (ISO-8601). Null når kunngjøringen ikke har frist.",
            "example": "2024-04-15T12:00:00Z"
          },
          "description": {
            "type": "string",
            "description": "Fritekstbeskrivelse av anskaffelsen.",
            "example": "Renhold av kommunale bygg i fire år med opsjon på forlengelse."
          },
          "buyer": {
            "type": "object",
            "additionalProperties": false,
            "description": "Oppdragsgiver. Alle felt er valgfrie.",
            "properties": {
              "orgnr": {
                "type": "string",
                "description": "Oppdragsgivers organisasjonsnummer.",
                "example": "974760673"
              },
              "name": {
                "type": "string",
                "example": "Oslo kommune"
              },
              "country": {
                "type": "string",
                "pattern": "^[A-Z]{2}$",
                "description": "ISO 3166-1 alpha-2 landkode.",
                "example": "NO"
              },
              "contactEmail": {
                "type": "string",
                "example": "anskaffelser@oslo.kommune.no"
              },
              "contactPhone": {
                "type": "string",
                "example": "+47 21 80 21 80"
              }
            }
          },
          "cpvCodes": {
            "type": "array",
            "description": "CPV-koder (Common Procurement Vocabulary). Tom array når ingen er angitt.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én CPV-kode. Begge felt er valgfrie.",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "CPV-kode.",
                  "example": "90910000"
                },
                "description": {
                  "type": "string",
                  "description": "Tekstlig beskrivelse av CPV-koden.",
                  "example": "Renholdstjenester"
                }
              }
            }
          },
          "estimatedValue": {
            "type": "object",
            "additionalProperties": false,
            "description": "Estimert kontraktsverdi som intervall. Alle felt er valgfrie.",
            "properties": {
              "lowerBound": {
                "type": "number",
                "description": "Nedre estimat.",
                "example": 1000000
              },
              "upperBound": {
                "type": "number",
                "description": "Øvre estimat.",
                "example": 5000000
              },
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$",
                "description": "ISO 4217 valutakode.",
                "example": "NOK"
              }
            }
          },
          "procurementType": {
            "type": "string",
            "description": "Anskaffelsesprosedyre (f.eks. OPEN, RESTRICTED, NEGOTIATED).",
            "example": "OPEN"
          },
          "noticeType": {
            "type": "string",
            "description": "Kunngjøringstype (CN=konkurransegrunnlag, PIN=forhåndsvarsel, CAN=kontraktstildeling).",
            "example": "CN"
          },
          "sourceUrl": {
            "type": "string",
            "description": "Lenke til kunngjøringen på doffin.no.",
            "example": "https://doffin.no/notices/2024-123456"
          }
        },
        "example": {
          "noticeId": "2024-123456",
          "publicationNumber": "2024/S 045-123456",
          "title": "Rammeavtale renholdstjenester",
          "publishedAt": "2024-03-01T09:00:00Z",
          "deadlineAt": "2024-04-15T12:00:00Z",
          "description": "Renhold av kommunale bygg i fire år med opsjon på forlengelse.",
          "buyer": {
            "orgnr": "974760673",
            "name": "Oslo kommune",
            "country": "NO",
            "contactEmail": "anskaffelser@oslo.kommune.no"
          },
          "cpvCodes": [
            {
              "code": "90910000",
              "description": "Renholdstjenester"
            }
          ],
          "estimatedValue": {
            "lowerBound": 1000000,
            "upperBound": 5000000,
            "currency": "NOK"
          },
          "procurementType": "OPEN",
          "noticeType": "CN",
          "sourceUrl": "https://doffin.no/notices/2024-123456"
        }
      },
      "ConnectorDataNorgeDataset": {
        "type": "object",
        "title": "ConnectorDataNorgeDataset",
        "additionalProperties": false,
        "description": "Ett normalisert datasett (DCAT-AP-NO v1) med nedlastningslenker (distributions) fra data.norge.no.",
        "required": [
          "id",
          "title",
          "description",
          "publisher",
          "publisherOrgNr",
          "theme",
          "license",
          "updateFrequency",
          "formats",
          "distributions",
          "updatedAt",
          "tags"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Datasett-id (faller tilbake til `uri` hvis `id` mangler upstream). Tom streng hvis ingen.",
            "example": "a1b2c3d4-1234-5678-9abc-def012345678"
          },
          "title": {
            "type": "string",
            "description": "Tittel valgt fra DCAT språk-map (nb/no/nn/en). Tom streng hvis ingen.",
            "example": "Konkursregisteret"
          },
          "description": {
            "type": "string",
            "description": "Beskrivelse valgt fra DCAT språk-map. Tom streng hvis ingen.",
            "example": "Datasett med konkursvedtak registrert i Brønnøysundregistrene."
          },
          "publisher": {
            "type": "string",
            "description": "Navn på utgiver (`publisher.name`). Tom streng hvis ingen.",
            "example": "Brønnøysundregistrene"
          },
          "publisherOrgNr": {
            "type": [
              "string",
              "null"
            ],
            "description": "Utgivers organisasjonsnummer, ellers `publisher.id`. Null hvis ingen.",
            "example": "974760673"
          },
          "theme": {
            "type": "array",
            "description": "DCAT-temaer (code, ellers uri). Tom liste hvis ingen.",
            "items": {
              "type": "string",
              "example": "GOVE"
            }
          },
          "license": {
            "type": "string",
            "description": "Lisens (`license.code`, ellers `license.uri`, ellers ren streng). Tom streng hvis ingen.",
            "example": "NLOD"
          },
          "updateFrequency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Oppdateringsfrekvens (`accrualPeriodicity`). Null hvis ikke oppgitt.",
            "example": "ANNUAL"
          },
          "formats": {
            "type": "array",
            "description": "Unike, store-bokstav-formater utledet fra distribusjonene. Tom liste hvis ingen.",
            "items": {
              "type": "string",
              "example": "CSV"
            }
          },
          "distributions": {
            "type": "array",
            "description": "Nedlastnings-/tilgangslenker per distribusjon. Tom liste hvis ingen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "format",
                "url",
                "mediaType"
              ],
              "description": "Én distribusjon — første verdi plukkes hvis upstream gir array.",
              "properties": {
                "format": {
                  "type": "string",
                  "description": "Format (`distribution.format`, første verdi). Tom streng hvis ingen.",
                  "example": "CSV"
                },
                "url": {
                  "type": "string",
                  "description": "Nedlastnings-URL (`downloadURL`, ellers `accessURL`). Tom streng hvis ingen.",
                  "example": "https://data.brreg.no/konkurs/dataset.csv"
                },
                "mediaType": {
                  "type": "string",
                  "description": "IANA media-type (`distribution.mediaType`, første verdi). Tom streng hvis ingen.",
                  "example": "text/csv"
                }
              }
            }
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret (`modified`, ellers `harvest.modified`). Null hvis ukjent.",
            "example": "2025-03-14T09:00:00Z"
          },
          "tags": {
            "type": "array",
            "description": "Nøkkelord (`keyword`) valgt fra språk-map. Tom liste hvis ingen.",
            "items": {
              "type": "string",
              "example": "konkurs"
            }
          }
        },
        "example": {
          "id": "a1b2c3d4-1234-5678-9abc-def012345678",
          "title": "Konkursregisteret",
          "description": "Datasett med konkursvedtak registrert i Brønnøysundregistrene.",
          "publisher": "Brønnøysundregistrene",
          "publisherOrgNr": "974760673",
          "theme": [
            "GOVE"
          ],
          "license": "NLOD",
          "updateFrequency": "ANNUAL",
          "formats": [
            "CSV",
            "JSON"
          ],
          "distributions": [
            {
              "format": "CSV",
              "url": "https://data.brreg.no/konkurs/dataset.csv",
              "mediaType": "text/csv"
            }
          ],
          "updatedAt": "2025-03-14T09:00:00Z",
          "tags": [
            "konkurs",
            "register"
          ]
        }
      },
      "ConnectorEuTransparencyRegistrant": {
        "type": "object",
        "title": "ConnectorEuTransparencyRegistrant",
        "additionalProperties": false,
        "description": "Enkelt lobbyist-/interesseorganisasjon fra EU Transparency Register, slått opp på registrerings-ID. Detalj-svaret pakker den normaliserte oppføringen i `entry`.",
        "required": [
          "registrationId",
          "entry"
        ],
        "properties": {
          "registrationId": {
            "type": "string",
            "description": "Registrerings-ID slik den ble forespurt (ekko av path-parameteren). EU-mønster `org-versjon` eller rent numerisk.",
            "pattern": "^([0-9]{6,20}-[0-9]{1,4}|[0-9]{6,20})$",
            "example": "123456789012-34"
          },
          "entry": {
            "type": "object",
            "additionalProperties": false,
            "description": "Normalisert oppføring (CanonicalLobbyist).",
            "required": [
              "registrationId",
              "name",
              "acronym",
              "category",
              "subCategory",
              "headOfficeCountry",
              "headOfficeCity",
              "website",
              "registrationDate",
              "lastUpdate",
              "euFunding",
              "lobbyingCosts",
              "fteEmployees",
              "mainInterests",
              "publicProfileUrl",
              "source"
            ],
            "properties": {
              "registrationId": {
                "type": "string",
                "description": "Identifikasjonskode fra feeden (trimmet). Kan være tom streng hvis rådata mangler `identificationCode`.",
                "example": "123456789012-34"
              },
              "name": {
                "type": "string",
                "description": "Organisasjonsnavn (trimmet; tom streng hvis ukjent).",
                "example": "Eksempel Interesseorganisasjon AISBL"
              },
              "acronym": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Akronym hvis oppgitt, ellers null.",
                "example": "EIO"
              },
              "category": {
                "type": "string",
                "enum": [
                  "I",
                  "II",
                  "III",
                  "IV",
                  "V",
                  "VI",
                  "OTHER"
                ],
                "description": "EU-kategori-kortkode. `OTHER` når rådata mangler eller har ukjent kategori.",
                "example": "II"
              },
              "subCategory": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Underkategori-tekst hvis oppgitt, ellers null.",
                "example": "Trade & business associations"
              },
              "headOfficeCountry": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Hovedkontor-land, normalisert til ISO 3166-1 alpha-2 (med EU-aliaser GB→UK, EL→GR). Null hvis ukjent.",
                "example": "BE"
              },
              "headOfficeCity": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Hovedkontor-by, ellers null.",
                "example": "Brussels"
              },
              "website": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Nettsted hvis oppgitt, ellers null.",
                "example": "https://example.org"
              },
              "registrationDate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Registreringsdato (ISO-8601 `YYYY-MM-DD`), ellers null.",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "example": "2021-03-15"
              },
              "lastUpdate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Siste oppdateringsdato (ISO-8601 `YYYY-MM-DD`), ellers null.",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "example": "2025-01-10"
              },
              "euFunding": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "EU-finansiering i EUR (parset fra tekst), ellers null.",
                "example": 250000
              },
              "lobbyingCosts": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Oppgitte lobby-kostnader i EUR (parset fra tekst), ellers null.",
                "example": 500000
              },
              "fteEmployees": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Antall årsverk (FTE) involvert i lobbyvirksomhet, ellers null.",
                "example": 12
              },
              "mainInterests": {
                "type": "array",
                "description": "Hovedinteresser / EU-lovforslag, splittet på `;`/`,`. Tom liste hvis ingen er oppgitt.",
                "items": {
                  "type": "string",
                  "example": "Digital Services Act"
                },
                "example": [
                  "Digital Services Act",
                  "AI Act"
                ]
              },
              "publicProfileUrl": {
                "type": "string",
                "description": "Lenke til offentlig EU-profil. Faller tilbake til hovedsiden hvis registreringsID mangler.",
                "example": "https://ec.europa.eu/transparencyregister/public/consultation/displaylobbyist.do?id=123456789012-34"
              },
              "source": {
                "type": "string",
                "enum": [
                  "EU-TRANSPARENCY-REGISTER"
                ],
                "description": "Proveniens (#74 explainability).",
                "example": "EU-TRANSPARENCY-REGISTER"
              }
            }
          }
        },
        "example": {
          "registrationId": "123456789012-34",
          "entry": {
            "registrationId": "123456789012-34",
            "name": "Eksempel Interesseorganisasjon AISBL",
            "acronym": "EIO",
            "category": "II",
            "subCategory": "Trade & business associations",
            "headOfficeCountry": "BE",
            "headOfficeCity": "Brussels",
            "website": "https://example.org",
            "registrationDate": "2021-03-15",
            "lastUpdate": "2025-01-10",
            "euFunding": 250000,
            "lobbyingCosts": 500000,
            "fteEmployees": 12,
            "mainInterests": [
              "Digital Services Act",
              "AI Act"
            ],
            "publicProfileUrl": "https://ec.europa.eu/transparencyregister/public/consultation/displaylobbyist.do?id=123456789012-34",
            "source": "EU-TRANSPARENCY-REGISTER"
          }
        }
      },
      "ConnectorApisIsCompany": {
        "type": "object",
        "title": "ConnectorApisIsCompany",
        "additionalProperties": false,
        "description": "Normalisert «company card» for ett islandsk selskap, slått opp på kennitala mot apis.is (islandsk foretaksregister-aggregator).",
        "required": [
          "id",
          "name",
          "address",
          "status",
          "vatNumbers",
          "country",
          "source"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kennitala (registreringsnummer) — kanonisk id, bindestrek strippet. Null når apis.is ikke returnerer `sn`.",
            "pattern": "^\\d{10}$",
            "example": "5811131290"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Selskapsnavn. Null når apis.is ikke returnerer `name`.",
            "example": "Reykjavík ehf."
          },
          "address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Adresse som fritekst. Null når apis.is ikke returnerer `address`.",
            "example": "Borgartún 3, 105 Reykjavík"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "unknown"
            ],
            "description": "Aktiv-status utledet av apis.is `active`-flagg (`unknown` når feltet mangler eller er uventet).",
            "example": "active"
          },
          "vatNumbers": {
            "type": "array",
            "description": "VAT-numre (virðisaukaskattur). Tom liste når ingen oppgis.",
            "items": {
              "type": "string",
              "example": "131290"
            },
            "example": [
              "131290"
            ]
          },
          "country": {
            "type": "string",
            "enum": [
              "IS"
            ],
            "description": "Landkode — konstant `IS`.",
            "example": "IS"
          },
          "source": {
            "type": "string",
            "enum": [
              "apis.is"
            ],
            "description": "Proveniens (#74 explainability) — konstant `apis.is`.",
            "example": "apis.is"
          }
        },
        "example": {
          "id": "5811131290",
          "name": "Reykjavík ehf.",
          "address": "Borgartún 3, 105 Reykjavík",
          "status": "active",
          "vatNumbers": [
            "131290"
          ],
          "country": "IS",
          "source": "apis.is"
        }
      },
      "ConnectorRssFeed": {
        "type": "object",
        "title": "ConnectorRssFeed",
        "additionalProperties": false,
        "description": "Normalisert RSS 2.0 / Atom-feed: feed-metadata + deduplisert artikkel-liste.",
        "required": [
          "feedUrl",
          "kind",
          "title",
          "homepage",
          "description",
          "items",
          "count"
        ],
        "properties": {
          "feedUrl": {
            "type": "string",
            "description": "Den faktisk hentede feed-URL-en (etter ev. redirects).",
            "example": "https://www.nrk.no/nyheter/siste.rss"
          },
          "kind": {
            "type": "string",
            "enum": [
              "rss",
              "atom"
            ],
            "description": "Detektert feed-format.",
            "example": "rss"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Feed-tittel. Null når feeden utelater den.",
            "example": "NRK – Siste nytt"
          },
          "homepage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Feed-nivå hjemmeside-lenke.",
            "example": "https://www.nrk.no/"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Feed-beskrivelse / Atom subtitle.",
            "example": "Siste nytt fra NRK"
          },
          "count": {
            "type": "integer",
            "description": "Antall (dedupliserte) artikler i `items`.",
            "example": 20
          },
          "items": {
            "type": "array",
            "description": "Dedupliserte, normaliserte artikler.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "title",
                "url",
                "publishedAt",
                "summary",
                "author",
                "topics"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stabil dedup-id (guid/link, ev. hash av title+published).",
                  "example": "1.17939155"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Alvorlig trafikkulykke på Søre Sunnmøre"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://www.nrk.no/nyheter/sak-1.17939155"
                },
                "publishedAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "ISO-8601 hvis dato kunne tolkes, ellers null.",
                  "example": "2026-06-28T04:13:50.000Z"
                },
                "summary": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "HTML-strippet sammendrag.",
                  "example": "Én person var fastklemt etter en trafikkulykke."
                },
                "author": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": null
                },
                "topics": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "Trafikk i Møre og Romsdal"
                  ]
                }
              }
            }
          }
        },
        "example": {
          "feedUrl": "https://www.nrk.no/nyheter/siste.rss",
          "kind": "rss",
          "title": "NRK – Siste nytt",
          "homepage": "https://www.nrk.no/",
          "description": null,
          "count": 1,
          "items": [
            {
              "id": "1.17939155",
              "title": "Alvorlig trafikkulykke på Søre Sunnmøre",
              "url": "https://www.nrk.no/nyheter/sak-1.17939155",
              "publishedAt": "2026-06-28T04:13:50.000Z",
              "summary": "Én person var fastklemt etter en trafikkulykke.",
              "author": null,
              "topics": [
                "Trafikk i Møre og Romsdal"
              ]
            }
          ]
        }
      },
      "ConnectorRssDiscover": {
        "type": "object",
        "title": "ConnectorRssDiscover",
        "additionalProperties": false,
        "description": "Liste over RSS/Atom-feeds en nettside annonserer via `<link rel=\"alternate\">`.",
        "required": [
          "domain",
          "pageUrl",
          "feeds",
          "count"
        ],
        "properties": {
          "domain": {
            "type": "string",
            "description": "Det forespurte domenet/URL-en.",
            "example": "regjeringen.no"
          },
          "pageUrl": {
            "type": "string",
            "description": "Den faktisk hentede side-URL-en (etter normalisering/redirects).",
            "example": "https://www.regjeringen.no/"
          },
          "count": {
            "type": "integer",
            "example": 2
          },
          "feeds": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "url",
                "title",
                "type"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "description": "Absolutt feed-URL.",
                  "example": "https://www.regjeringen.no/no/rss/Rss/2581966/"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Pressemeldinger"
                },
                "type": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Annonsert MIME-type.",
                  "example": "application/rss+xml"
                }
              }
            }
          }
        },
        "example": {
          "domain": "regjeringen.no",
          "pageUrl": "https://www.regjeringen.no/",
          "count": 1,
          "feeds": [
            {
              "url": "https://www.regjeringen.no/no/rss/Rss/2581966/",
              "title": "Pressemeldinger",
              "type": "application/rss+xml"
            }
          ]
        }
      },
      "ConnectorVlaamseCodexDocument": {
        "type": "object",
        "title": "ConnectorVlaamseCodexDocument",
        "additionalProperties": false,
        "description": "Normalisert dokument fra Vlaamse Codex (Flanderns konsoliderte lovgivning), NL-felt mappet til kanoniske EN-felt.",
        "required": [
          "id",
          "title",
          "date",
          "publishedAt",
          "documentType",
          "hasContent",
          "isFederal",
          "numac",
          "versionIds",
          "country",
          "region",
          "source",
          "apiUrl"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Numerisk dokument-id (kanonisk).",
            "example": 1042042
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tittel (`Opschrift`).",
            "example": "Besluit van de Vlaamse Regering tot wijziging …"
          },
          "date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Vedtaksdato (ISO-8601).",
            "example": "2026-05-21T00:00:00.000Z"
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Publikasjonsdato i Belgisch Staatsblad (ISO-8601).",
            "example": "2026-06-01T00:00:00.000Z"
          },
          "documentType": {
            "type": [
              "string",
              "null"
            ],
            "example": "Ministerieel besluit"
          },
          "hasContent": {
            "type": "boolean",
            "description": "Har konsolidert innhold/artikler.",
            "example": true
          },
          "isFederal": {
            "type": "boolean",
            "example": false
          },
          "numac": {
            "type": [
              "string",
              "null"
            ],
            "description": "NUMAC-identifikator i Belgisch Staatsblad.",
            "example": "2026012345"
          },
          "versionIds": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1543632
            ]
          },
          "country": {
            "type": "string",
            "enum": [
              "BE"
            ],
            "example": "BE"
          },
          "region": {
            "type": "string",
            "enum": [
              "Vlaanderen"
            ],
            "example": "Vlaanderen"
          },
          "source": {
            "type": "string",
            "enum": [
              "vlaamse-codex"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "vlaamse-codex"
          },
          "apiUrl": {
            "type": "string",
            "description": "Deterministisk API-resurs-URL for dokumentet.",
            "example": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
          }
        },
        "example": {
          "id": 1042042,
          "title": "Besluit van de Vlaamse Regering tot wijziging …",
          "date": "2026-05-21T00:00:00.000Z",
          "publishedAt": "2026-06-01T00:00:00.000Z",
          "documentType": "Ministerieel besluit",
          "hasContent": true,
          "isFederal": false,
          "numac": "2026012345",
          "versionIds": [
            1543632
          ],
          "country": "BE",
          "region": "Vlaanderen",
          "source": "vlaamse-codex",
          "apiUrl": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
        }
      },
      "ConnectorVlaamseCodexSearch": {
        "type": "object",
        "title": "ConnectorVlaamseCodexSearch",
        "additionalProperties": false,
        "description": "Paginert søkeresultat av wetgevingsdokumenter i Vlaamse Codex.",
        "required": [
          "query",
          "foundDocuments",
          "foundArticles",
          "skip",
          "take",
          "documents",
          "count"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "milieu"
          },
          "foundDocuments": {
            "type": "integer",
            "description": "Totalt antall dokumenter som matcher (upstream-teller).",
            "example": 1646
          },
          "foundArticles": {
            "type": "integer",
            "description": "Totalt antall matchende artikler (upstream-teller).",
            "example": 4334
          },
          "skip": {
            "type": "integer",
            "example": 0
          },
          "take": {
            "type": "integer",
            "example": 25
          },
          "count": {
            "type": "integer",
            "description": "Antall dokumenter i denne siden (`documents.length`).",
            "example": 25
          },
          "documents": {
            "type": "array",
            "description": "Normaliserte dokumenter (samme form som document-oppslaget).",
            "items": {
              "type": "object",
              "title": "ConnectorVlaamseCodexDocument",
              "additionalProperties": false,
              "description": "Normalisert dokument fra Vlaamse Codex (Flanderns konsoliderte lovgivning), NL-felt mappet til kanoniske EN-felt.",
              "required": [
                "id",
                "title",
                "date",
                "publishedAt",
                "documentType",
                "hasContent",
                "isFederal",
                "numac",
                "versionIds",
                "country",
                "region",
                "source",
                "apiUrl"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "Numerisk dokument-id (kanonisk).",
                  "example": 1042042
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Tittel (`Opschrift`).",
                  "example": "Besluit van de Vlaamse Regering tot wijziging …"
                },
                "date": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Vedtaksdato (ISO-8601).",
                  "example": "2026-05-21T00:00:00.000Z"
                },
                "publishedAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Publikasjonsdato i Belgisch Staatsblad (ISO-8601).",
                  "example": "2026-06-01T00:00:00.000Z"
                },
                "documentType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Ministerieel besluit"
                },
                "hasContent": {
                  "type": "boolean",
                  "description": "Har konsolidert innhold/artikler.",
                  "example": true
                },
                "isFederal": {
                  "type": "boolean",
                  "example": false
                },
                "numac": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "NUMAC-identifikator i Belgisch Staatsblad.",
                  "example": "2026012345"
                },
                "versionIds": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  },
                  "example": [
                    1543632
                  ]
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "BE"
                  ],
                  "example": "BE"
                },
                "region": {
                  "type": "string",
                  "enum": [
                    "Vlaanderen"
                  ],
                  "example": "Vlaanderen"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "vlaamse-codex"
                  ],
                  "description": "Proveniens (#74 explainability).",
                  "example": "vlaamse-codex"
                },
                "apiUrl": {
                  "type": "string",
                  "description": "Deterministisk API-resurs-URL for dokumentet.",
                  "example": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
                }
              },
              "example": {
                "id": 1042042,
                "title": "Besluit van de Vlaamse Regering tot wijziging …",
                "date": "2026-05-21T00:00:00.000Z",
                "publishedAt": "2026-06-01T00:00:00.000Z",
                "documentType": "Ministerieel besluit",
                "hasContent": true,
                "isFederal": false,
                "numac": "2026012345",
                "versionIds": [
                  1543632
                ],
                "country": "BE",
                "region": "Vlaanderen",
                "source": "vlaamse-codex",
                "apiUrl": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
              }
            }
          }
        },
        "example": {
          "query": "milieu",
          "foundDocuments": 1646,
          "foundArticles": 4334,
          "skip": 0,
          "take": 1,
          "count": 1,
          "documents": [
            {
              "id": 1042042,
              "title": "Ministerieel besluit tot wijziging …",
              "date": "2026-05-21T00:00:00.000Z",
              "publishedAt": "2026-06-01T00:00:00.000Z",
              "documentType": null,
              "hasContent": true,
              "isFederal": false,
              "numac": null,
              "versionIds": [
                1543632
              ],
              "country": "BE",
              "region": "Vlaanderen",
              "source": "vlaamse-codex",
              "apiUrl": "https://codex.opendata.api.vlaanderen.be/api/WetgevingDocument/1042042"
            }
          ]
        }
      },
      "ConnectorVlaamseCodexTheme": {
        "type": "object",
        "title": "ConnectorVlaamseCodexTheme",
        "additionalProperties": false,
        "required": [
          "id",
          "label",
          "order",
          "children"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tema-navn (`Omschrijving`).",
            "example": "Leefmilieu"
          },
          "order": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Sorteringsrekkefølge (`Volgorde`).",
            "example": 1
          },
          "children": {
            "type": "array",
            "description": "Under-temaer (samme form, rekursivt).",
            "items": {
              "$ref": "#"
            }
          }
        },
        "example": {
          "id": 1,
          "label": "Leefmilieu",
          "order": 1,
          "children": [
            {
              "id": 11,
              "label": "Water",
              "order": 1,
              "children": []
            }
          ]
        }
      },
      "ConnectorVlaamseCodexThemes": {
        "type": "object",
        "title": "ConnectorVlaamseCodexThemes",
        "additionalProperties": false,
        "description": "Hierarkisk tema-tre (thema) som strukturerer Vlaamse Codex.",
        "required": [
          "themes",
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "Antall rot-temaer.",
            "example": 1
          },
          "themes": {
            "type": "array",
            "items": {
              "type": "object",
              "title": "ConnectorVlaamseCodexTheme",
              "additionalProperties": false,
              "required": [
                "id",
                "label",
                "order",
                "children"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "example": 1
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Tema-navn (`Omschrijving`).",
                  "example": "Leefmilieu"
                },
                "order": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "Sorteringsrekkefølge (`Volgorde`).",
                  "example": 1
                },
                "children": {
                  "type": "array",
                  "description": "Under-temaer (samme form, rekursivt).",
                  "items": {
                    "$ref": "#/components/schemas/ConnectorVlaamseCodexTheme"
                  }
                }
              },
              "example": {
                "id": 1,
                "label": "Leefmilieu",
                "order": 1,
                "children": [
                  {
                    "id": 11,
                    "label": "Water",
                    "order": 1,
                    "children": []
                  }
                ]
              }
            }
          }
        },
        "example": {
          "count": 1,
          "themes": [
            {
              "id": 1,
              "label": "Leefmilieu",
              "order": 1,
              "children": [
                {
                  "id": 11,
                  "label": "Water",
                  "order": 1,
                  "children": []
                }
              ]
            }
          ]
        }
      },
      "ConnectorArbetsformedlingenAd": {
        "type": "object",
        "title": "ConnectorArbetsformedlingenAd",
        "additionalProperties": false,
        "description": "Én normalisert svensk stillingsannonse (Platsbanken / JobTech JobAd-API), returnert direkte på toppnivå — identisk skjema med et `jobs[]`-element fra `/search` (#4404).",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{1,20}$",
            "description": "Annonse-id (JobTech), alltid stringifisert.",
            "example": "12345678"
          },
          "headline": {
            "type": [
              "string",
              "null"
            ],
            "description": "Annonsetittel.",
            "example": "Sjuksköterska till akutmottagningen"
          },
          "employer": {
            "type": [
              "string",
              "null"
            ],
            "description": "Arbeidsgivers navn.",
            "example": "Region Stockholm"
          },
          "employerOrgnr": {
            "type": [
              "string",
              "null"
            ],
            "description": "Arbeidsgivers svenske organisasjonsnummer.",
            "example": "2321000016"
          },
          "workplace": {
            "type": [
              "string",
              "null"
            ],
            "description": "Arbeidsplassens/avdelingens navn.",
            "example": "Karolinska Universitetssjukhuset"
          },
          "municipality": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kommune for arbeidsstedet.",
            "example": "Stockholm"
          },
          "municipalityCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Svensk kommunekode.",
            "example": "0180"
          },
          "region": {
            "type": [
              "string",
              "null"
            ],
            "description": "Län/region for arbeidsstedet.",
            "example": "Stockholms län"
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "description": "Land for arbeidsstedet.",
            "example": "Sverige"
          },
          "occupation": {
            "type": [
              "string",
              "null"
            ],
            "description": "Yrke (taksonomi-label).",
            "example": "Sjuksköterska, grundutbildad"
          },
          "occupationField": {
            "type": [
              "string",
              "null"
            ],
            "description": "Yrkesområde (taksonomi-label).",
            "example": "Hälso- och sjukvård"
          },
          "employmentType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Ansettelsesform (taksonomi-label).",
            "example": "Vanlig anställning"
          },
          "workingHoursType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Arbeidstidstype (taksonomi-label).",
            "example": "Heltid"
          },
          "duration": {
            "type": [
              "string",
              "null"
            ],
            "description": "Ansettelsens varighet (taksonomi-label).",
            "example": "Tills vidare"
          },
          "numberOfVacancies": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Antall ledige stillinger i annonsen.",
            "example": 3
          },
          "publicationDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Publiseringstidspunkt (ISO-8601).",
            "example": "2026-06-10T09:00:00"
          },
          "applicationDeadline": {
            "type": [
              "string",
              "null"
            ],
            "description": "Søknadsfrist (ISO-8601).",
            "example": "2026-07-15T23:59:59"
          },
          "webpageUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lenke til annonsen hos arbeidsgiver/Platsbanken.",
            "example": "https://arbetsformedlingen.se/platsbanken/annonser/12345678"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Full annonsetekst (uavkortet i `/ad`-endepunktet; avkortet snippet i `/search`).",
            "example": "Vi söker en engagerad sjuksköterska till vår akutmottagning…"
          }
        },
        "example": {
          "id": "12345678",
          "headline": "Sjuksköterska till akutmottagningen",
          "employer": "Region Stockholm",
          "employerOrgnr": "2321000016",
          "workplace": "Karolinska Universitetssjukhuset",
          "municipality": "Stockholm",
          "municipalityCode": "0180",
          "region": "Stockholms län",
          "country": "Sverige",
          "occupation": "Sjuksköterska, grundutbildad",
          "occupationField": "Hälso- och sjukvård",
          "employmentType": "Vanlig anställning",
          "workingHoursType": "Heltid",
          "duration": "Tills vidare",
          "numberOfVacancies": 3,
          "publicationDate": "2026-06-10T09:00:00",
          "applicationDeadline": "2026-07-15T23:59:59",
          "webpageUrl": "https://arbetsformedlingen.se/platsbanken/annonser/12345678",
          "description": "Vi söker en engagerad sjuksköterska till vår akutmottagning…"
        }
      },
      "ConnectorBbrDkBuilding": {
        "type": "object",
        "title": "ConnectorBbrDkBuilding",
        "additionalProperties": false,
        "description": "Én normalisert dansk bygning fra BBR (Bygnings- og Boligregistret). Felt med manglende kildeverdi serialiseres som null.",
        "required": [
          "source"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "BBR-bygnings-ID (DAWA `id`).",
            "example": "12345678-90ab-cdef-1234-567890abcdef"
          },
          "kommunekode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dansk kommunekode (DAWA `byg_kommunekode`).",
            "example": "0101"
          },
          "adresse": {
            "type": [
              "string",
              "null"
            ],
            "description": "Adressebetegnelse fra tilknyttet adgangsadresse.",
            "example": "Rådhuspladsen 1, 1550 København V"
          },
          "adgangsadresseid": {
            "type": [
              "string",
              "null"
            ],
            "description": "ID for tilknyttet adgangsadresse (`adgangsadresseid` el. `adgangsadresse.id`).",
            "example": "0a3f5089-0e8a-32b8-e044-0003ba298018"
          },
          "bebyggetAreal": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Bebygget areal i m² (DAWA `byg_bebygget_areal`).",
            "example": 120
          },
          "samletAreal": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Samlet bygningsareal i m² (DAWA `byg_samlet_bygnings_areal`).",
            "example": 240
          },
          "antalEtager": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Antall etasjer (DAWA `byg_antal_etager`).",
            "example": 2
          },
          "opfoerelsesar": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Oppførelsesår (DAWA `byg_opfoerelsesar`).",
            "example": 1965
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "BBR-statuskode for bygningen (DAWA `byg_status`).",
            "example": "6"
          },
          "anvendelse": {
            "type": [
              "string",
              "null"
            ],
            "description": "Anvendelseskode for bygningen (DAWA `byg_anvendelse`).",
            "example": "120"
          },
          "varmeinstallation": {
            "type": [
              "string",
              "null"
            ],
            "description": "Varmeinstallasjonskode (DAWA `byg_varmeinstallation`).",
            "example": "1"
          },
          "ydervaeggMateriale": {
            "type": [
              "string",
              "null"
            ],
            "description": "Materialkode for yttervegg (DAWA `byg_ydervaegg_materiale`).",
            "example": "1"
          },
          "tagMateriale": {
            "type": [
              "string",
              "null"
            ],
            "description": "Materialkode for tak (DAWA `tagdaeknings_materiale`).",
            "example": "3"
          },
          "source": {
            "type": "string",
            "enum": [
              "bbr-dk"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "bbr-dk"
          }
        },
        "example": {
          "id": "12345678-90ab-cdef-1234-567890abcdef",
          "kommunekode": "0101",
          "adresse": "Rådhuspladsen 1, 1550 København V",
          "adgangsadresseid": "0a3f5089-0e8a-32b8-e044-0003ba298018",
          "bebyggetAreal": 120,
          "samletAreal": 240,
          "antalEtager": 2,
          "opfoerelsesar": 1965,
          "status": "6",
          "anvendelse": "120",
          "varmeinstallation": "1",
          "ydervaeggMateriale": "1",
          "tagMateriale": "3",
          "source": "bbr-dk"
        }
      },
      "ConnectorEchaSubstance": {
        "type": "object",
        "title": "ConnectorEchaSubstance",
        "additionalProperties": false,
        "description": "Normalisert kjemikalie-detalj (CLP/REACH) fra EU ECHA C&L Inventory. Alle felt er alltid til stede — normalize-laget defaulter manglende verdier til null, tom liste eller false.",
        "required": [
          "substanceId",
          "name",
          "ecNumber",
          "casNumber",
          "molecularFormula",
          "iupacName",
          "classification",
          "isAuthorisationRequired",
          "isRestricted",
          "isSvhc",
          "svhcStatus",
          "source"
        ],
        "properties": {
          "substanceId": {
            "type": "string",
            "description": "Stoff-identifikator. ECHA intern ID, EC-nummer eller CAS-nummer (avledet fra første tilgjengelige rå-felt; kan være tom streng).",
            "example": "100.000.567"
          },
          "name": {
            "type": "string",
            "description": "Stoffnavn. Defaulter til \"Unknown\" når ECHA ikke oppgir navn.",
            "example": "Benzene"
          },
          "ecNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "EC-nummer (format XXX-XXX-X). null hvis ikke oppgitt.",
            "pattern": "^\\d{3}-\\d{3}-\\d$",
            "example": "200-753-7"
          },
          "casNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "CAS Registry Number. null hvis ikke oppgitt.",
            "example": "71-43-2"
          },
          "molecularFormula": {
            "type": [
              "string",
              "null"
            ],
            "description": "Molekylærformel. null hvis ikke oppgitt.",
            "example": "C6H6"
          },
          "iupacName": {
            "type": [
              "string",
              "null"
            ],
            "description": "IUPAC-navn. null hvis ikke oppgitt.",
            "example": "benzene"
          },
          "classification": {
            "type": "array",
            "description": "CLP-klassifiseringer (harmonisert). Tom liste når ingen klassifisering er tilgjengelig.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én CLP-fareklasse med signalord, H-fraser og GHS-piktogrammer.",
              "required": [
                "hazardClass",
                "signalWord",
                "hPhrases",
                "ghsPictograms"
              ],
              "properties": {
                "hazardClass": {
                  "type": "string",
                  "description": "Fareklasse. Defaulter til \"Unknown\" når ECHA ikke oppgir den.",
                  "example": "Carcinogenicity"
                },
                "signalWord": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "CLP-signalord (Danger/Warning). null hvis ikke oppgitt.",
                  "example": "Danger"
                },
                "hPhrases": {
                  "type": "array",
                  "description": "H-fraser (faresetninger). Tom liste hvis ingen.",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "H350",
                    "H340"
                  ]
                },
                "ghsPictograms": {
                  "type": "array",
                  "description": "GHS-piktogram-koder. Tom liste hvis ingen.",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "GHS08",
                    "GHS02"
                  ]
                }
              }
            }
          },
          "isAuthorisationRequired": {
            "type": "boolean",
            "description": "Krever REACH-autorisasjon (avledet fra rå `authorisation`).",
            "example": false
          },
          "isRestricted": {
            "type": "boolean",
            "description": "Underlagt REACH-restriksjon (avledet fra rå `restriction`).",
            "example": true
          },
          "isSvhc": {
            "type": "boolean",
            "description": "Substance of Very High Concern — true når svhcStatus finnes og er ulik \"NOT_SVHC\".",
            "example": true
          },
          "svhcStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Rå SVHC-status fra ECHA. null hvis ikke oppgitt.",
            "example": "SVHC"
          },
          "source": {
            "type": "string",
            "enum": [
              "echa"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "echa"
          }
        },
        "example": {
          "substanceId": "100.000.567",
          "name": "Benzene",
          "ecNumber": "200-753-7",
          "casNumber": "71-43-2",
          "molecularFormula": "C6H6",
          "iupacName": "benzene",
          "classification": [
            {
              "hazardClass": "Carcinogenicity",
              "signalWord": "Danger",
              "hPhrases": [
                "H350",
                "H340"
              ],
              "ghsPictograms": [
                "GHS08",
                "GHS02"
              ]
            }
          ],
          "isAuthorisationRequired": false,
          "isRestricted": true,
          "isSvhc": true,
          "svhcStatus": "SVHC",
          "source": "echa"
        }
      },
      "ConnectorEpoOpsPatent": {
        "type": "object",
        "title": "ConnectorEpoOpsPatent",
        "additionalProperties": false,
        "description": "Kanonisert bibliografi for ett patent fra EPO Open Patent Services (OPS).",
        "required": [
          "patentNumber",
          "patent"
        ],
        "properties": {
          "patentNumber": {
            "type": "string",
            "description": "Normalisert (uppercased/trimmed) input-publikasjonsnummer fra ruten.",
            "pattern": "^[A-Z]{2}\\d{6,8}([A-Z]{1,2}\\d?)?$",
            "example": "EP1234567B1"
          },
          "patent": {
            "type": "object",
            "additionalProperties": false,
            "description": "Kanonisk patent (`CanonicalPatent`) — denormalisert fra rå EPO/JSON.",
            "required": [
              "patentNumber",
              "title",
              "inventors",
              "applicants",
              "filingDate",
              "publicationDate",
              "grantDate",
              "status",
              "ipcClasses",
              "abstract",
              "countryOfFiling",
              "publicUrl",
              "source"
            ],
            "properties": {
              "patentNumber": {
                "type": "string",
                "description": "Komplett publikasjonsnummer satt sammen fra country+doc-number+kind (kan være tom hvis upstream mangler referanse).",
                "example": "EP1234567B1"
              },
              "title": {
                "type": "string",
                "description": "Tittel — engelsk hvis tilgjengelig, ellers første språk (kan være tom).",
                "example": "Hydrogen electrolysis cell"
              },
              "inventors": {
                "type": "array",
                "description": "Oppfinnere (kan være tom).",
                "items": {
                  "type": "string"
                },
                "example": [
                  "Andersen, Kari",
                  "Hansen, Ola"
                ]
              },
              "applicants": {
                "type": "array",
                "description": "Søkere/applicants (kan være tom).",
                "items": {
                  "type": "string"
                },
                "example": [
                  "EQUINOR ASA"
                ]
              },
              "filingDate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Søknadsdato (ISO-8601) eller null.",
                "example": "2020-03-12"
              },
              "publicationDate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Publikasjonsdato (ISO-8601) eller null.",
                "example": "2021-09-15"
              },
              "grantDate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Meddelelsesdato (ISO-8601), kun satt om patent er meddelt; ellers null.",
                "example": "2023-06-01"
              },
              "status": {
                "type": "string",
                "enum": [
                  "application",
                  "granted",
                  "expired",
                  "withdrawn",
                  "unknown"
                ],
                "description": "Avledet status — `granted` ved grantDate, `application` ved publicationDate, ellers `unknown`.",
                "example": "granted"
              },
              "ipcClasses": {
                "type": "array",
                "description": "IPC-klassifiseringer (International Patent Classification, kun primær-symbolet per node).",
                "items": {
                  "type": "string"
                },
                "example": [
                  "C25B1/04",
                  "C25B9/00"
                ]
              },
              "abstract": {
                "type": "string",
                "description": "Sammendrag (abstract) på engelsk hvis tilgjengelig (kan være tom).",
                "example": "An electrolysis cell for producing hydrogen from water."
              },
              "countryOfFiling": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO 3166-1 alpha-2 for første-publiseringsland (f.eks. \"EP\"), eller null.",
                "example": "EP"
              },
              "publicUrl": {
                "type": "string",
                "format": "uri",
                "description": "Lenke til Espacenet-visning av patentet.",
                "example": "https://worldwide.espacenet.com/patent/search?q=EP1234567B1"
              },
              "source": {
                "type": "string",
                "enum": [
                  "EPO-OPS"
                ],
                "description": "Proveniens (#74 explainability).",
                "example": "EPO-OPS"
              }
            }
          }
        },
        "example": {
          "patentNumber": "EP1234567B1",
          "patent": {
            "patentNumber": "EP1234567B1",
            "title": "Hydrogen electrolysis cell",
            "inventors": [
              "Andersen, Kari",
              "Hansen, Ola"
            ],
            "applicants": [
              "EQUINOR ASA"
            ],
            "filingDate": "2020-03-12",
            "publicationDate": "2021-09-15",
            "grantDate": "2023-06-01",
            "status": "granted",
            "ipcClasses": [
              "C25B1/04",
              "C25B9/00"
            ],
            "abstract": "An electrolysis cell for producing hydrogen from water.",
            "countryOfFiling": "EP",
            "publicUrl": "https://worldwide.espacenet.com/patent/search?q=EP1234567B1",
            "source": "EPO-OPS"
          }
        }
      },
      "ConnectorFiskeridirektoratetSite": {
        "type": "object",
        "title": "ConnectorFiskeridirektoratetSite",
        "additionalProperties": false,
        "description": "Normalisert akvakulturlokalitet fra Fiskeridirektoratets pub-aqua-register. Råformen (engelske felt + nøstet `placement`/`connections`) mappes til denne stabile formen. Mange felt er nullbare fordi kilden utelater/mangler verdien.",
        "required": [
          "siteId",
          "name",
          "licenses"
        ],
        "properties": {
          "siteId": {
            "type": "string",
            "description": "Lokalitetsnummer (siteNr) som streng. Tom streng hvis kilden mangler siteNr. Gyldig forespørsel krever siteNr 10000–99999.",
            "example": "12345"
          },
          "name": {
            "type": "string",
            "description": "Lokalitetsnavn. Tom streng hvis kilden mangler navn.",
            "example": "Storvika"
          },
          "permitNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tillatelsesnummer fra aktiv tilknytning (connection), ellers første tilknytning. Null hvis ingen tilknytning har licenseNr.",
            "example": "AB0001"
          },
          "municipalityCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kommunenummer fra `placement.municipalityCode`.",
            "example": "1108"
          },
          "municipalityName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kommunenavn fra `placement.municipalityName`.",
            "example": "Sandnes"
          },
          "countyCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Fylkesnummer fra `placement.countyCode`.",
            "example": "11"
          },
          "countyName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Fylkesnavn fra `placement.countyName`.",
            "example": "Rogaland"
          },
          "species": {
            "type": [
              "string",
              "null"
            ],
            "description": "Art (menneskelesbar) fra `speciesTypeValue`, ellers første verdi i `speciesTypes`.",
            "example": "Laks"
          },
          "speciesCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Artskode fra `speciesType`, ellers første verdi i `speciesTypes`.",
            "example": "SALMON"
          },
          "capacity": {
            "type": [
              "number",
              "null"
            ],
            "description": "Kapasitet (MTB e.l.) fra `capacity`. Null hvis ikke oppgitt.",
            "example": 3120
          },
          "production": {
            "type": "null",
            "description": "Alltid null fra denne kilden — pub-aqua eksponerer ikke faktisk produksjon. Feltet beholdes for UI-kontrakt.",
            "example": null
          },
          "permitType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tillatelsestype fra `firstClearanceTypeValue`, ellers `firstClearanceType`.",
            "example": "Kommersiell matfisk"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Avledet status fra `connections`. `AKTIV` hvis minst én aktiv tilknytning, ellers `INAKTIV`. Null hvis ingen tilknytninger.",
            "enum": [
              "AKTIV",
              "INAKTIV",
              null
            ],
            "example": "AKTIV"
          },
          "lat": {
            "type": [
              "number",
              "null"
            ],
            "description": "Breddegrad (WGS84) fra `latitude`.",
            "example": 58.8524
          },
          "lon": {
            "type": [
              "number",
              "null"
            ],
            "description": "Lengdegrad (WGS84) fra `longitude`.",
            "example": 5.7361
          },
          "placementType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Plasseringstype fra `placementTypeValue`, ellers `placementType` (f.eks. sjø/land).",
            "example": "Sjø"
          },
          "prodAreaName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Produksjonsområde-navn fra `placement.prodAreaName`.",
            "example": "Produksjonsområde 2"
          },
          "prodAreaStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Produksjonsområde-status fra `placement.prodAreaStatus`.",
            "example": "Grønn"
          },
          "capacityUnit": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kapasitetsenhet fra `capacityUnitType`.",
            "example": "TONN"
          },
          "licenses": {
            "type": "array",
            "description": "Unike tillatelsesnumre fra `connections[].licenseNr`. Tom liste hvis ingen tilknytninger.",
            "items": {
              "type": "string"
            },
            "example": [
              "AB0001",
              "AB0002"
            ]
          }
        },
        "example": {
          "siteId": "12345",
          "name": "Storvika",
          "permitNumber": "AB0001",
          "municipalityCode": "1108",
          "municipalityName": "Sandnes",
          "countyCode": "11",
          "countyName": "Rogaland",
          "species": "Laks",
          "speciesCode": "SALMON",
          "capacity": 3120,
          "production": null,
          "permitType": "Kommersiell matfisk",
          "status": "AKTIV",
          "lat": 58.8524,
          "lon": 5.7361,
          "placementType": "Sjø",
          "prodAreaName": "Produksjonsområde 2",
          "prodAreaStatus": "Grønn",
          "capacityUnit": "TONN",
          "licenses": [
            "AB0001",
            "AB0002"
          ]
        }
      },
      "ConnectorDomstolSeAvgorande": {
        "type": "object",
        "title": "ConnectorDomstolSeAvgorande",
        "additionalProperties": false,
        "description": "Ett rättsavgörande (domstolsavgjørelse) fra Sveriges Domstolar öppna data. Alle felt er valgfrie — kilden utelater felt som mangler.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Avgörande-ID (instans:löpenummer:år hos Sveriges Domstolar).",
            "example": "HD:1:2024"
          },
          "rubrik": {
            "type": "string",
            "description": "Rubrik / overskrift som oppsummerer avgjørelsen.",
            "example": "Fråga om beräkning av skadestånd vid avtalsbrott."
          },
          "instans": {
            "type": "string",
            "description": "Domstolsinstans. Kjente verdier: HD (Högsta domstolen), HFD (Högsta förvaltningsdomstolen), hovratten, forvaltningsratten.",
            "example": "HD"
          },
          "datum": {
            "type": "string",
            "description": "Avgjørelsesdato (ISO-8601).",
            "example": "2024-03-14"
          },
          "referat": {
            "type": "string",
            "description": "Referattekst / sammendrag av avgjørelsen.",
            "example": "Högsta domstolen fann att skadeståndet skulle beräknas enligt ..."
          }
        },
        "example": {
          "id": "HD:1:2024",
          "rubrik": "Fråga om beräkning av skadestånd vid avtalsbrott.",
          "instans": "HD",
          "datum": "2024-03-14",
          "referat": "Högsta domstolen fann att skadeståndet skulle beräknas enligt ..."
        }
      },
      "ConnectorEurlexCelexDocument": {
        "type": "object",
        "title": "ConnectorEurlexCelexDocument",
        "additionalProperties": false,
        "description": "CELEX-dokument med metadata og deterministisk URL-trio per språk. Designet for compliance-audit-spor (CELEX + kanonisk URL + dato + publisering).",
        "required": [
          "celex",
          "document"
        ],
        "properties": {
          "celex": {
            "type": "string",
            "pattern": "^[0-9A-Z]{8,15}$",
            "description": "Normalisert CELEX-nummer (trimmet + uppercase) som ble slått opp.",
            "example": "32016R0679"
          },
          "document": {
            "type": "object",
            "additionalProperties": false,
            "description": "Kanonisk dokumentmodell (CelexDocument).",
            "required": [
              "celex",
              "title",
              "titleLocalized",
              "type",
              "publicationDate",
              "inForceDate",
              "ojReference",
              "languageAvailability",
              "urls",
              "eeaRelevant",
              "source"
            ],
            "properties": {
              "celex": {
                "type": "string",
                "pattern": "^[0-9A-Z]{8,15}$",
                "example": "32016R0679"
              },
              "title": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Engelsk tittel fra SPARQL (titleEN), eller null hvis ukjent.",
                "example": "Regulation (EU) 2016/679 of the European Parliament and of the Council"
              },
              "titleLocalized": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "language",
                  "title"
                ],
                "description": "Lokalisert tittel hvis tilgjengelig (norsk først), ellers null.",
                "properties": {
                  "language": {
                    "type": "string",
                    "enum": [
                      "EN",
                      "NO",
                      "SV",
                      "DA",
                      "DE",
                      "FR"
                    ],
                    "description": "Språkkode for den lokaliserte tittelen.",
                    "example": "NO"
                  },
                  "title": {
                    "type": "string",
                    "example": "Personvernforordningen"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Regulation",
                  "Directive",
                  "Decision",
                  "Recommendation",
                  "Opinion",
                  "Communication",
                  "CaseLaw",
                  "InternationalAgreement",
                  "Other"
                ],
                "description": "Dokumenttype utledet fra CELEX-sektor/mønster (inferDocumentType).",
                "example": "Regulation"
              },
              "publicationDate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Publiseringsdato (YYYY-MM-DD), eller null hvis ukjent.",
                "example": "2016-04-27"
              },
              "inForceDate": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Dato dokumentet trådte i kraft (YYYY-MM-DD), eller null.",
                "example": "2016-05-24"
              },
              "ojReference": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Official Journal-referanse, eller null hvis ukjent.",
                "example": "OJ L 119, 4.5.2016, p. 1–88"
              },
              "languageAvailability": {
                "type": "array",
                "description": "Språk URL-trioen vil resolve til (default alle seks språk).",
                "items": {
                  "type": "string",
                  "enum": [
                    "EN",
                    "NO",
                    "SV",
                    "DA",
                    "DE",
                    "FR"
                  ]
                },
                "example": [
                  "EN",
                  "NO",
                  "SV",
                  "DA",
                  "DE",
                  "FR"
                ]
              },
              "urls": {
                "type": "object",
                "additionalProperties": false,
                "description": "URL-trio (canonical/html/pdf) per språk. Konstrueres deterministisk; språk uten URL-er er utelatt (Partial-record).",
                "properties": {
                  "EN": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "canonical",
                      "html",
                      "pdf"
                    ],
                    "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                    "properties": {
                      "canonical": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      },
                      "html": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                      },
                      "pdf": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                      }
                    }
                  },
                  "NO": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "canonical",
                      "html",
                      "pdf"
                    ],
                    "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                    "properties": {
                      "canonical": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      },
                      "html": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                      },
                      "pdf": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                      }
                    }
                  },
                  "SV": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "canonical",
                      "html",
                      "pdf"
                    ],
                    "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                    "properties": {
                      "canonical": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      },
                      "html": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                      },
                      "pdf": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                      }
                    }
                  },
                  "DA": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "canonical",
                      "html",
                      "pdf"
                    ],
                    "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                    "properties": {
                      "canonical": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      },
                      "html": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                      },
                      "pdf": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                      }
                    }
                  },
                  "DE": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "canonical",
                      "html",
                      "pdf"
                    ],
                    "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                    "properties": {
                      "canonical": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      },
                      "html": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                      },
                      "pdf": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                      }
                    }
                  },
                  "FR": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "canonical",
                      "html",
                      "pdf"
                    ],
                    "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
                    "properties": {
                      "canonical": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                      },
                      "html": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
                      },
                      "pdf": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
                      }
                    }
                  }
                }
              },
              "eeaRelevant": {
                "type": "boolean",
                "description": "EØS-relevant flagg, mappet fra SPARQL (false hvis ikke satt).",
                "example": true
              },
              "source": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "fetchedAt",
                  "upstream"
                ],
                "description": "Proveniens (#74 explainability).",
                "properties": {
                  "fetchedAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "ISO-8601 tidsstempel for når dokumentet ble hentet.",
                    "example": "2026-06-24T10:00:00.000Z"
                  },
                  "upstream": {
                    "type": "string",
                    "enum": [
                      "eur-lex-sparql"
                    ],
                    "example": "eur-lex-sparql"
                  }
                }
              }
            }
          }
        },
        "$defs": {
          "CelexDocumentUrls": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "canonical",
              "html",
              "pdf"
            ],
            "description": "URL-trio for ett språk — canonical (landing/sitering), html, pdf.",
            "properties": {
              "canonical": {
                "type": "string",
                "format": "uri",
                "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
              },
              "html": {
                "type": "string",
                "format": "uri",
                "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679"
              },
              "pdf": {
                "type": "string",
                "format": "uri",
                "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
              }
            }
          }
        },
        "example": {
          "celex": "32016R0679",
          "document": {
            "celex": "32016R0679",
            "title": "Regulation (EU) 2016/679 of the European Parliament and of the Council",
            "titleLocalized": {
              "language": "NO",
              "title": "Personvernforordningen"
            },
            "type": "Regulation",
            "publicationDate": "2016-04-27",
            "inForceDate": "2016-05-24",
            "ojReference": "OJ L 119, 4.5.2016, p. 1–88",
            "languageAvailability": [
              "EN",
              "NO",
              "SV",
              "DA",
              "DE",
              "FR"
            ],
            "urls": {
              "EN": {
                "canonical": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679",
                "html": "https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679",
                "pdf": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"
              },
              "NO": {
                "canonical": "https://eur-lex.europa.eu/legal-content/NO/TXT/?uri=CELEX:32016R0679",
                "html": "https://eur-lex.europa.eu/legal-content/NO/TXT/HTML/?uri=CELEX:32016R0679",
                "pdf": "https://eur-lex.europa.eu/legal-content/NO/TXT/PDF/?uri=CELEX:32016R0679"
              }
            },
            "eeaRelevant": true,
            "source": {
              "fetchedAt": "2026-06-24T10:00:00.000Z",
              "upstream": "eur-lex-sparql"
            }
          }
        }
      },
      "ConnectorSkatteetatenArrears": {
        "type": "object",
        "title": "ConnectorSkatteetatenArrears",
        "additionalProperties": false,
        "description": "Normaliserte skatterestanser (utestående skattekrav) for én virksomhet fra Skatteetatens Restanser-API.",
        "required": [
          "identifier",
          "totalOutstanding",
          "arrears",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "identifier": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummer (9 siffer, ikke-siffer fjernet).",
            "example": "923609016"
          },
          "totalOutstanding": {
            "type": "number",
            "description": "Sum av alle restanse-beløp (NOK). 0 ved ingen utestående krav.",
            "example": 125000
          },
          "arrears": {
            "type": "array",
            "description": "Liste over utestående skattekrav (tom ved ingen restanser).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "claimType",
                "amount"
              ],
              "description": "Én skatterestanse-post.",
              "properties": {
                "claimType": {
                  "type": "string",
                  "description": "Kravtype (fra `kravtype`; \"ukjent\" hvis upstream mangler felt).",
                  "example": "Merverdiavgift"
                },
                "amount": {
                  "type": "number",
                  "description": "Beløp for kravet (NOK).",
                  "example": 75000
                },
                "dueDate": {
                  "type": "string",
                  "description": "Forfallsdato (ISO-8601). Utelatt hvis upstream ikke oppgir den.",
                  "example": "2025-03-10"
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "Skatteetaten Restanser"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "Skatteetaten Restanser"
          },
          "fetchedAt": {
            "type": "string",
            "description": "Tidspunkt for henting (ISO-8601 timestamp).",
            "example": "2026-06-24T08:00:00.000Z"
          }
        },
        "example": {
          "identifier": "923609016",
          "totalOutstanding": 125000,
          "arrears": [
            {
              "claimType": "Merverdiavgift",
              "amount": 75000,
              "dueDate": "2025-03-10"
            },
            {
              "claimType": "Arbeidsgiveravgift",
              "amount": 50000,
              "dueDate": "2025-04-15"
            }
          ],
          "source": "Skatteetaten Restanser",
          "fetchedAt": "2026-06-24T08:00:00.000Z"
        }
      },
      "ConnectorHelsedirGuideline": {
        "type": "object",
        "title": "ConnectorHelsedirGuideline",
        "additionalProperties": false,
        "description": "Detalj-svar for én klinisk retningslinje (Helsedirektoratet HAPI).",
        "required": [
          "guideline"
        ],
        "properties": {
          "guideline": {
            "type": "object",
            "additionalProperties": false,
            "description": "Normalisert retningslinje. Kun `id` er garantert satt i 200-svaret; øvrige felt er `null` når kilden ikke oppgir dem.",
            "required": [
              "id",
              "title",
              "status",
              "publishedAt",
              "sourceUrl"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9._:-]{1,80}$",
                "description": "Retningslinje-ID (matcher request-pathen, GUIDELINE_ID_RX).",
                "example": "diabetes-2021"
              },
              "title": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Tittel på retningslinjen, eller `null` hvis ikke oppgitt.",
                "example": "Nasjonal faglig retningslinje for diabetes"
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Publiseringsstatus fra kilden, eller `null`.",
                "example": "published"
              },
              "publishedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Publiseringsdato (kildens format, typisk ISO-8601), eller `null`.",
                "example": "2021-09-14"
              },
              "sourceUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Lenke til retningslinjen hos Helsedirektoratet, eller `null`.",
                "example": "https://www.helsedirektoratet.no/retningslinjer/diabetes"
              }
            }
          }
        },
        "example": {
          "guideline": {
            "id": "diabetes-2021",
            "title": "Nasjonal faglig retningslinje for diabetes",
            "status": "published",
            "publishedAt": "2021-09-14",
            "sourceUrl": "https://www.helsedirektoratet.no/retningslinjer/diabetes"
          }
        }
      },
      "ConnectorPatentstyretIpr": {
        "type": "object",
        "title": "ConnectorPatentstyretIpr",
        "additionalProperties": false,
        "description": "IPR-saker (patent/varemerke/design) for ett organisasjonsnummer, hentet rått fra Patentstyrets register-API og pakket i en proveniens-konvolutt.",
        "required": [
          "data",
          "orgnr",
          "source"
        ],
        "properties": {
          "data": {
            "description": "Ubehandlet svar-kropp fra Patentstyret (`IprCasesByCompany`). Strukturen videreformidles uendret (route typer den som `unknown`) og er derfor ikke kontraktfestet her — kan være objekt, array eller skalar avhengig av upstream.",
            "example": {
              "cases": [
                {
                  "caseNumber": "201912345",
                  "type": "trademark",
                  "status": "registered"
                }
              ]
            }
          },
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "9-sifret organisasjonsnummer det ble slått opp på (ekko av path-param).",
            "example": "923609016"
          },
          "source": {
            "type": "string",
            "enum": [
              "Patentstyret OpenData-external — patentstyret.no"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "Patentstyret OpenData-external — patentstyret.no"
          }
        },
        "example": {
          "data": {
            "cases": [
              {
                "caseNumber": "201912345",
                "type": "trademark",
                "status": "registered"
              }
            ]
          },
          "orgnr": "923609016",
          "source": "Patentstyret OpenData-external — patentstyret.no"
        }
      },
      "ConnectorNasjonalbiblioteketItem": {
        "type": "object",
        "title": "ConnectorNasjonalbiblioteketItem",
        "additionalProperties": false,
        "description": "Ett normalisert verk fra Nasjonalbibliotekets katalog-API (api.nb.no). Inneholder kjernemetadata, identifikatorer og tilgangsstatus.",
        "required": [
          "id",
          "title",
          "subtitle",
          "creators",
          "publishedYear",
          "publisher",
          "place",
          "mediaTypes",
          "languages",
          "pageCount",
          "subjects",
          "identifiers",
          "thumbnailUrl",
          "isPublicDomain"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "NB-verks-ID. Tom streng hvis rå-svaret mangler `id`.",
            "example": "URN:NBN:no-nb_digibok_2008051404010"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Hovedtittel. `null` hvis tittel mangler.",
            "example": "Sult"
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ],
            "description": "Undertittel. `null` hvis den mangler.",
            "example": "Roman"
          },
          "creators": {
            "type": "array",
            "description": "Opphavspersoner som strenger på formen \"Navn (rolle)\". Tom array hvis ingen er registrert.",
            "items": {
              "type": "string"
            },
            "example": [
              "Hamsun, Knut (forfatter)"
            ]
          },
          "publishedYear": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Utgivelsesår utledet fra `originInfo.issued` (1000–2200). `null` hvis ikke funnet.",
            "example": 1890
          },
          "publisher": {
            "type": [
              "string",
              "null"
            ],
            "description": "Forlag fra `originInfo.publisher`. `null` hvis mangler.",
            "example": "Gyldendal"
          },
          "place": {
            "type": [
              "string",
              "null"
            ],
            "description": "Utgivelsessted fra `originInfo.place`. `null` hvis mangler.",
            "example": "Kristiania"
          },
          "mediaTypes": {
            "type": "array",
            "description": "NB-medietyper for verket. Tom array hvis ingen.",
            "items": {
              "type": "string"
            },
            "example": [
              "bok"
            ]
          },
          "languages": {
            "type": "array",
            "description": "Språkkoder for verket. Tom array hvis ingen.",
            "items": {
              "type": "string"
            },
            "example": [
              "nob"
            ]
          },
          "pageCount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Antall sider hvis NB oppgir det numerisk, ellers `null`.",
            "example": 235
          },
          "subjects": {
            "type": "array",
            "description": "Emneord fra `subjectName`. Tom array hvis ingen.",
            "items": {
              "type": "string"
            },
            "example": [
              "Norsk litteratur",
              "Roman"
            ]
          },
          "identifiers": {
            "type": "array",
            "description": "Flatet liste av identifikatorer utledet fra NBs `identifiers`-objekt (varierende nøkler som urn, isbn, issn, oaiId). Tom array hvis ingen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "type",
                "value"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "description": "Identifikator-type (nøkkelen i NBs identifiers-objekt).",
                  "example": "isbn"
                },
                "value": {
                  "type": "string",
                  "description": "Identifikator-verdi.",
                  "example": "9788205123456"
                }
              }
            },
            "example": [
              {
                "type": "urn",
                "value": "URN:NBN:no-nb_digibok_2008051404010"
              }
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Beste tilgjengelige miniatyrbilde-lenke fra `_links` (thumbnail_custom/_medium/_small/_large/thumbnail). `null` hvis ingen.",
            "example": "https://api.nb.no/catalog/v1/iiif/URN:NBN:no-nb_digibok_2008051404010/thumbnail_medium"
          },
          "isPublicDomain": {
            "type": "boolean",
            "description": "Utledet av om verket er i det fri (fra `accessInfo.isPublicDomain`, lisens \"publicdomain\"/\"cc0\").",
            "example": false
          }
        },
        "example": {
          "id": "URN:NBN:no-nb_digibok_2008051404010",
          "title": "Sult",
          "subtitle": "Roman",
          "creators": [
            "Hamsun, Knut (forfatter)"
          ],
          "publishedYear": 1890,
          "publisher": "Gyldendal",
          "place": "Kristiania",
          "mediaTypes": [
            "bok"
          ],
          "languages": [
            "nob"
          ],
          "pageCount": 235,
          "subjects": [
            "Norsk litteratur",
            "Roman"
          ],
          "identifiers": [
            {
              "type": "urn",
              "value": "URN:NBN:no-nb_digibok_2008051404010"
            }
          ],
          "thumbnailUrl": "https://api.nb.no/catalog/v1/iiif/URN:NBN:no-nb_digibok_2008051404010/thumbnail_medium",
          "isPublicDomain": false
        }
      },
      "ConnectorLosoreregisteret": {
        "type": "object",
        "title": "ConnectorLosoreregisteret",
        "additionalProperties": false,
        "description": "Rettsstiftelser (pant, salgspant, leasing o.l.) registrert i Brønnøysundregistrene Løsøreregisteret for ett organisasjonsnummer.",
        "required": [
          "orgnr",
          "rettsstiftelser",
          "totalAntall",
          "source"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "pattern": "^\\d{9}$",
            "description": "Organisasjonsnummeret oppslaget gjelder (9 siffer).",
            "example": "923609016"
          },
          "totalAntall": {
            "type": "integer",
            "minimum": 0,
            "description": "Totalt antall rettsstiftelser. Faller tilbake til lengden av `rettsstiftelser` når upstream ikke oppgir `totalAntall`.",
            "example": 2
          },
          "source": {
            "type": "string",
            "enum": [
              "losoreregisteret"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "losoreregisteret"
          },
          "rettsstiftelser": {
            "type": "array",
            "description": "Rettsstiftelser (tom liste når ingen registrert).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Én rettsstiftelse (pant, salgspant, leasing o.l.).",
              "required": [
                "dokumentnummer",
                "type",
                "tinglysningsDato",
                "slettingsDato",
                "erAktiv",
                "belopKredittNok",
                "rettighetshavere",
                "debitorOrgnr",
                "debitorNavn",
                "panteobjektBeskrivelse"
              ],
              "properties": {
                "dokumentnummer": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dokumentnummer for tinglysningen.",
                  "example": "2021-1234567"
                },
                "type": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Type rettsstiftelse (f.eks. salgspant, factoringpant, leasing).",
                  "example": "Salgspant"
                },
                "tinglysningsDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dato for tinglysing (ISO-8601).",
                  "example": "2021-03-15"
                },
                "slettingsDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Dato rettsstiftelsen ble slettet (null når fortsatt aktiv).",
                  "example": null
                },
                "erAktiv": {
                  "type": "boolean",
                  "description": "Avledet — true når `slettingsDato` mangler.",
                  "example": true
                },
                "belopKredittNok": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Kredittbeløp i NOK (null når ikke oppgitt).",
                  "example": 500000
                },
                "debitorOrgnr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Debitors organisasjonsnummer.",
                  "example": "923609016"
                },
                "debitorNavn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Debitors navn.",
                  "example": "EKSEMPEL AS"
                },
                "panteobjektBeskrivelse": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Sammenslått beskrivelse av panteobjekter (semikolon-separert), eller null når ingen.",
                  "example": "Driftstilbehør; Varelager"
                },
                "rettighetshavere": {
                  "type": "array",
                  "description": "Rettighetshavere (panthavere). Tom liste når ingen.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Én rettighetshaver.",
                    "required": [
                      "orgnr",
                      "navn"
                    ],
                    "properties": {
                      "orgnr": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Rettighetshavers organisasjonsnummer.",
                        "example": "987654321"
                      },
                      "navn": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Rettighetshavers navn.",
                        "example": "BANKEN ASA"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "orgnr": "923609016",
          "totalAntall": 1,
          "source": "losoreregisteret",
          "rettsstiftelser": [
            {
              "dokumentnummer": "2021-1234567",
              "type": "Salgspant",
              "tinglysningsDato": "2021-03-15",
              "slettingsDato": null,
              "erAktiv": true,
              "belopKredittNok": 500000,
              "debitorOrgnr": "923609016",
              "debitorNavn": "EKSEMPEL AS",
              "panteobjektBeskrivelse": "Driftstilbehør; Varelager",
              "rettighetshavere": [
                {
                  "orgnr": "987654321",
                  "navn": "BANKEN ASA"
                }
              ]
            }
          ]
        }
      },
      "ConnectorSwedacAccreditation": {
        "type": "object",
        "title": "ConnectorSwedacAccreditation",
        "additionalProperties": false,
        "description": "Én akkreditering utstedt av Swedac (Sveriges nationella ackrediteringsorgan). Brukes til due diligence / compliance (KYC/KYB) for å verifisere at en motpart har gyldig akkreditering.",
        "required": [
          "accreditationNumber",
          "organizationName",
          "accreditationType",
          "standards",
          "status"
        ],
        "properties": {
          "accreditationNumber": {
            "type": "string",
            "pattern": "^[A-Za-z0-9-]{1,32}$",
            "description": "Akkrediteringsnummer (Swedac-internt unikt).",
            "example": "1234"
          },
          "organizationName": {
            "type": "string",
            "description": "Selskapsnavn.",
            "example": "Exempel Laboratorium AB"
          },
          "organizationNumber": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d{6}-\\d{4}$",
            "description": "Svensk organisasjonsnummer (kanonisk form 6 sifre + bindestrek + 4 sifre). Null hvis ukjent eller uparsbart.",
            "example": "556677-8899"
          },
          "accreditationType": {
            "type": "string",
            "enum": [
              "laboratory",
              "certification-body",
              "inspection-body",
              "environmental-verifier",
              "metrology",
              "other"
            ],
            "description": "Type akkreditering (utledet av normalize).",
            "example": "laboratory"
          },
          "standards": {
            "type": "array",
            "description": "Standarder akkrediteringen dekker (ISO/IEC 17025, ISO 17020 osv.). Tom liste hvis ingen oppgitt.",
            "items": {
              "type": "string",
              "example": "ISO/IEC 17025"
            },
            "example": [
              "ISO/IEC 17025"
            ]
          },
          "scope": {
            "type": [
              "string",
              "null"
            ],
            "description": "Akkrediterings-omfang (kortbeskrivelse av aktivitetsfeltet). Null hvis ikke oppgitt.",
            "example": "Kemisk analys av dricksvatten"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "suspended",
              "withdrawn",
              "expired",
              "unknown"
            ],
            "description": "Akkrediteringsstatus (utledet av normalize; `unknown` når kilden ikke oppgir status).",
            "example": "active"
          },
          "issuedAt": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Utstedt dato (ISO YYYY-MM-DD). Null hvis ukjent.",
            "example": "2020-03-15"
          },
          "validUntil": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Gyldig til (ISO YYYY-MM-DD). Null hvis ikke tidsbegrenset/ukjent.",
            "example": "2025-03-15"
          },
          "address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Adresse (kort). Null hvis ikke oppgitt.",
            "example": "Storgatan 1"
          },
          "city": {
            "type": [
              "string",
              "null"
            ],
            "description": "By. Null hvis ikke oppgitt.",
            "example": "Stockholm"
          },
          "postalCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Postnummer. Null hvis ikke oppgitt.",
            "example": "11122"
          }
        },
        "example": {
          "accreditationNumber": "1234",
          "organizationName": "Exempel Laboratorium AB",
          "organizationNumber": "556677-8899",
          "accreditationType": "laboratory",
          "standards": [
            "ISO/IEC 17025"
          ],
          "scope": "Kemisk analys av dricksvatten",
          "status": "active",
          "issuedAt": "2020-03-15",
          "validUntil": "2025-03-15",
          "address": "Storgatan 1",
          "city": "Stockholm",
          "postalCode": "11122"
        }
      },
      "ConnectorLatviaDatagovDataset": {
        "type": "object",
        "title": "ConnectorLatviaDatagovDataset",
        "additionalProperties": false,
        "description": "Normalisert datasett-detalj fra Latvias nasjonale åpne-data-portal (data.gov.lv, CKAN v3 package_show).",
        "required": [
          "id",
          "name",
          "title",
          "description",
          "organization",
          "license",
          "modified",
          "created",
          "tags",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-datasett-UUID (raw.id).",
            "example": "5d8a2f3e-1c44-4a0b-9b21-3e6f0c8d1234"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-slug/navn (raw.name).",
            "example": "uznemumu-registra-dati"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Menneskelesbar tittel (raw.title).",
            "example": "Uzņēmumu reģistra dati"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Beskrivelse (raw.notes).",
            "example": "Open data from the Register of Enterprises of Latvia."
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "description": "Eier-organisasjon — title med fallback til name (raw.organization).",
            "example": "Uzņēmumu reģistrs"
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lisens — license_title med fallback til license_id.",
            "example": "Creative Commons Attribution"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret-tidsstempel fra CKAN (metadata_modified, ISO-8601).",
            "example": "2026-05-12T09:30:00.123456"
          },
          "created": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opprettet-tidsstempel fra CKAN (metadata_created, ISO-8601).",
            "example": "2021-03-01T08:00:00.000000"
          },
          "tags": {
            "type": "array",
            "description": "Tag-navn (tom liste hvis ingen). Tomme/manglende navn filtreres bort.",
            "items": {
              "type": "string"
            },
            "example": [
              "companies",
              "register",
              "open-data"
            ]
          },
          "resources": {
            "type": "array",
            "description": "Distribusjoner/ressurser i datasettet (tom liste hvis ingen).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "format",
                "url",
                "datastoreActive"
              ],
              "description": "Én CKAN-ressurs (distribusjon).",
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressurs-id (raw.resources[].id).",
                  "example": "a1b2c3d4-0001-4abc-8def-000000000001"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressursnavn.",
                  "example": "Companies CSV"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Filformat slik CKAN oppgir det.",
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Nedlastings-URL for ressursen.",
                  "example": "https://data.gov.lv/dati/dataset/.../download/companies.csv"
                },
                "datastoreActive": {
                  "type": "boolean",
                  "description": "True hvis ressursen er lastet inn i CKAN DataStore (raw.datastore_active === true) og dermed kan pagineres via datastore-endepunktet.",
                  "example": true
                }
              }
            }
          }
        },
        "example": {
          "id": "5d8a2f3e-1c44-4a0b-9b21-3e6f0c8d1234",
          "name": "uznemumu-registra-dati",
          "title": "Uzņēmumu reģistra dati",
          "description": "Open data from the Register of Enterprises of Latvia.",
          "organization": "Uzņēmumu reģistrs",
          "license": "Creative Commons Attribution",
          "modified": "2026-05-12T09:30:00.123456",
          "created": "2021-03-01T08:00:00.000000",
          "tags": [
            "companies",
            "register",
            "open-data"
          ],
          "resources": [
            {
              "id": "a1b2c3d4-0001-4abc-8def-000000000001",
              "name": "Companies CSV",
              "format": "CSV",
              "url": "https://data.gov.lv/dati/dataset/.../download/companies.csv",
              "datastoreActive": true
            }
          ]
        }
      },
      "ConnectorHoyesterettCase": {
        "type": "object",
        "title": "ConnectorHoyesterettCase",
        "additionalProperties": false,
        "description": "Én Høyesterett-avgjørelse i kilde-agnostisk CanonicalCase-form. Hentet via Lovdata-delegasjon (doc-type STRD) når LOVDATA_API_KEY er satt.",
        "required": [
          "id",
          "caseType",
          "country",
          "court",
          "title",
          "decidedIso",
          "relatedRegulations",
          "sistHentetIso",
          "source"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Stabil ID. For Hoyesterett `hoyesterett:{aar}:{saksnr}`.",
            "example": "hoyesterett:2025:512"
          },
          "caseType": {
            "type": "string",
            "enum": [
              "judgment",
              "decision",
              "ruling",
              "annet"
            ],
            "description": "Avgjørelsestype — judgment (dom), decision (kjennelse/vedtak), ruling (beslutning) eller annet.",
            "example": "judgment"
          },
          "country": {
            "type": "string",
            "enum": [
              "NO",
              "SE",
              "DK",
              "FI",
              "IS"
            ],
            "description": "Landkode. Alltid \"NO\" for Høyesterett.",
            "example": "NO"
          },
          "court": {
            "type": "string",
            "description": "Domstol eller forvaltningsorgan. Alltid \"Hoyesterett\" for denne kilden.",
            "example": "Hoyesterett"
          },
          "title": {
            "type": "string",
            "description": "Sakens offisielle tittel eller parts-betegnelse.",
            "example": "A mot Staten v/Skattedirektoratet"
          },
          "summary": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sammendrag (én-til-tre setninger). Null når ikke hydrert.",
            "example": "Spørsmål om fradragsrett for inngående merverdiavgift."
          },
          "bodyText": {
            "type": [
              "string",
              "null"
            ],
            "description": "Full avgjørelsestekst. Null når kun listing er hentet.",
            "example": null
          },
          "bodyUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL til avgjørelsen på hoyesterett.no. Kan være null.",
            "example": "https://www.hoyesterett.no/avgjorelser/2025:512"
          },
          "decidedIso": {
            "type": "string",
            "description": "Når avgjørelsen ble avsagt. ISO-8601-tidsstempel.",
            "example": "2025-04-15T00:00:00Z"
          },
          "citation": {
            "type": [
              "string",
              "null"
            ],
            "description": "Saksreferanse fra kilden. Kan være null.",
            "example": "HR-2025-512-A"
          },
          "relatedRegulations": {
            "type": "array",
            "description": "Relevante lovparagrafer (krysspeker mot CanonicalRegulation). Tom array hvis ingen.",
            "items": {
              "type": "string"
            },
            "example": [
              "merverdiavgiftsloven § 8-1"
            ]
          },
          "sistHentetIso": {
            "type": "string",
            "description": "Tidspunkt connectoren hentet payloaden. ISO-8601.",
            "example": "2026-06-24T10:00:00.000Z"
          },
          "source": {
            "type": "string",
            "description": "Proveniens (#74 explainability). \"hoyesterett\" for denne kilden.",
            "example": "hoyesterett"
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kilde-API-versjon hvis tilgjengelig. Null for Høyesterett.",
            "example": null
          }
        },
        "example": {
          "id": "hoyesterett:2025:512",
          "caseType": "judgment",
          "country": "NO",
          "court": "Hoyesterett",
          "title": "A mot Staten v/Skattedirektoratet",
          "summary": "Spørsmål om fradragsrett for inngående merverdiavgift.",
          "bodyText": null,
          "bodyUrl": "https://www.hoyesterett.no/avgjorelser/2025:512",
          "decidedIso": "2025-04-15T00:00:00Z",
          "citation": "HR-2025-512-A",
          "relatedRegulations": [
            "merverdiavgiftsloven § 8-1"
          ],
          "sistHentetIso": "2026-06-24T10:00:00.000Z",
          "source": "hoyesterett",
          "apiVersion": null
        }
      },
      "ConnectorUdiStatistics": {
        "type": "object",
        "title": "ConnectorUdiStatistics",
        "additionalProperties": false,
        "description": "Normalisert UDI-statistikk for én serie og ett regnskapsår, i kanonisk langform (én rad per periode × kategori).",
        "required": [
          "series",
          "seriesTitle",
          "topic",
          "year",
          "dimension",
          "periods",
          "categories",
          "rows",
          "rowCount",
          "unit",
          "source",
          "sourceUrl",
          "fetchedAt"
        ],
        "properties": {
          "series": {
            "type": "string",
            "description": "Stabil serie-id (matcher `{series}`-stien).",
            "example": "asylsoknader"
          },
          "seriesTitle": {
            "type": "string",
            "description": "Lesbar tittel for serien.",
            "example": "Asylsøknader etter statsborgerskap og måned"
          },
          "topic": {
            "type": "string",
            "enum": [
              "asyl",
              "arbeid",
              "familie",
              "visum"
            ],
            "description": "Tema-merkelapp for serien.",
            "example": "asyl"
          },
          "year": {
            "type": "integer",
            "minimum": 2020,
            "description": "Regnskapsåret statistikken gjelder.",
            "example": 2024
          },
          "dimension": {
            "type": "string",
            "description": "Dimensjonsnavn fra tabellens første kolonneoverskrift (f.eks. statsborgerskap). Faller tilbake til «Kategori» ved tomt hode.",
            "example": "Statsborgerskap"
          },
          "periods": {
            "type": "array",
            "description": "Periode-etiketter fra tabellhodet (total-kolonner ekskludert).",
            "items": {
              "type": "string",
              "example": "Jan"
            },
            "example": [
              "Jan",
              "Feb",
              "Mar"
            ]
          },
          "categories": {
            "type": "array",
            "description": "Distinkte kategorier fra første kolonne (total-rader ekskludert).",
            "items": {
              "type": "string",
              "example": "Syria"
            },
            "example": [
              "Syria",
              "Afghanistan"
            ]
          },
          "rows": {
            "type": "array",
            "description": "Langform-rader — kryssproduktet (periode × kategori).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "period",
                "category",
                "value",
                "unit",
                "sourceUrl"
              ],
              "description": "Én normalisert statistikk-rad.",
              "properties": {
                "period": {
                  "type": "string",
                  "description": "Periode-etikett fra tabellhodet.",
                  "example": "Jan"
                },
                "category": {
                  "type": "string",
                  "description": "Dimensjonsverdi fra første kolonne.",
                  "example": "Syria"
                },
                "value": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "Tallverdi — `null` der UDI har tomt felt eller «..».",
                  "example": 123
                },
                "unit": {
                  "type": "string",
                  "enum": [
                    "personer"
                  ],
                  "description": "Måleenhet — alltid «personer».",
                  "example": "personer"
                },
                "sourceUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "Lenke til UDI-tabellsiden raden er hentet fra.",
                  "example": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
                }
              }
            }
          },
          "rowCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall rader i `rows`.",
            "example": 6
          },
          "unit": {
            "type": "string",
            "enum": [
              "personer"
            ],
            "description": "Måleenhet for alle verdier — alltid «personer».",
            "example": "personer"
          },
          "source": {
            "type": "string",
            "enum": [
              "udi"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "udi"
          },
          "sourceUrl": {
            "type": "string",
            "format": "uri",
            "description": "UDI-tabellsiden serien er høstet fra.",
            "example": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Tidspunkt for normalisering (ISO-8601 UTC).",
            "example": "2026-06-24T08:30:00.000Z"
          }
        },
        "example": {
          "series": "asylsoknader",
          "seriesTitle": "Asylsøknader etter statsborgerskap og måned",
          "topic": "asyl",
          "year": 2024,
          "dimension": "Statsborgerskap",
          "periods": [
            "Jan",
            "Feb",
            "Mar"
          ],
          "categories": [
            "Syria",
            "Afghanistan"
          ],
          "rows": [
            {
              "period": "Jan",
              "category": "Syria",
              "value": 123,
              "unit": "personer",
              "sourceUrl": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
            },
            {
              "period": "Feb",
              "category": "Syria",
              "value": null,
              "unit": "personer",
              "sourceUrl": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/"
            }
          ],
          "rowCount": 6,
          "unit": "personer",
          "source": "udi",
          "sourceUrl": "https://www.udi.no/statistikk-og-analyse/statistikk/asylsoknader-etter-statsborgerskap-og-maned-2024/",
          "fetchedAt": "2026-06-24T08:30:00.000Z"
        }
      },
      "ConnectorEiopaDataset": {
        "type": "object",
        "title": "ConnectorEiopaDataset",
        "additionalProperties": false,
        "description": "Detaljer om ett kuratert EIOPA-datasett (forsikring/pensjon, EØS).",
        "required": [
          "source",
          "dataset"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "eiopa"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "eiopa"
          },
          "dataset": {
            "type": "object",
            "additionalProperties": false,
            "description": "Ett katalog-datasett (EiopaDiscoveryDataset).",
            "required": [
              "id",
              "title",
              "topic",
              "description",
              "frequency",
              "formats",
              "url",
              "lastVerified"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Stabil katalog-ID (slug).",
                "example": "solvency-ii-statistics"
              },
              "title": {
                "type": "string",
                "description": "Menneskelig lesbar tittel.",
                "example": "Solvency II — Kvartalsvise aggregerte statistikker"
              },
              "topic": {
                "type": "string",
                "enum": [
                  "solvency-ii",
                  "occupational-pensions",
                  "insurance-statistics",
                  "ibip",
                  "pension-funds",
                  "other"
                ],
                "description": "Tematisk kategori for datasettet.",
                "example": "solvency-ii"
              },
              "description": {
                "type": "string",
                "description": "Beskrivelse av datasettets innhold og dekning.",
                "example": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet."
              },
              "frequency": {
                "type": "string",
                "enum": [
                  "quarterly",
                  "annual",
                  "monthly",
                  "ad-hoc"
                ],
                "description": "Publiseringsfrekvens hos EIOPA.",
                "example": "quarterly"
              },
              "formats": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Tilgjengelige filformater for nedlasting.",
                "example": [
                  "CSV",
                  "Excel"
                ]
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Kanonisk EIOPA-side for datasettet.",
                "example": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en"
              },
              "ketlEndpoint": {
                "type": "string",
                "description": "KETL-rute som eksponerer datasettet, hvis tilgjengelig. Utelates for datasett uten dedikert endepunkt (f.eks. solvency-ii-qrts).",
                "example": "/api/connectors/eiopa/datasets/solvency-ii-statistics"
              },
              "lastVerified": {
                "type": "string",
                "format": "date",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Dato katalog-oppføringen sist ble verifisert (ISO-8601).",
                "example": "2026-06-10"
              }
            }
          }
        },
        "example": {
          "source": "eiopa",
          "dataset": {
            "id": "solvency-ii-statistics",
            "title": "Solvency II — Kvartalsvise aggregerte statistikker",
            "topic": "solvency-ii",
            "description": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet.",
            "frequency": "quarterly",
            "formats": [
              "CSV",
              "Excel"
            ],
            "url": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en",
            "ketlEndpoint": "/api/connectors/eiopa/datasets/solvency-ii-statistics",
            "lastVerified": "2026-06-10"
          }
        }
      },
      "ConnectorDataEuropaMqaCatalogue": {
        "type": "object",
        "title": "ConnectorDataEuropaMqaCatalogue",
        "additionalProperties": false,
        "description": "Normalisert MQA-rapport (Metadata Quality Assurance) for én data.europa.eu-catalogue. Total-score 0–450 med klassifisering og fem dimensjoner. `normalizeMqaEntry` populerer alltid alle topp-nivå-felt; verdier kan være null når upstream mangler dem.",
        "required": [
          "id",
          "title",
          "score",
          "rating",
          "maxScore",
          "dimensions"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Catalogue-slug fra upstream `info.id` (null hvis ikke levert).",
            "example": "norway"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Visningsnavn hvis levert av upstream.",
            "example": "Norway"
          },
          "score": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 450,
            "description": "Total MQA-poengsum (0–450). Null hvis upstream ikke leverte score.",
            "example": 372
          },
          "rating": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "excellent",
              "good",
              "sufficient",
              "bad",
              null
            ],
            "description": "Klassifisering basert på offisiell MQA-metodikk: excellent ≥351, good ≥221, sufficient ≥121, ellers bad. Null når `score` er null.",
            "example": "excellent"
          },
          "maxScore": {
            "type": "integer",
            "enum": [
              450
            ],
            "description": "Maks oppnåelig total-score (konstant 450).",
            "example": 450
          },
          "dimensions": {
            "type": "object",
            "additionalProperties": false,
            "description": "De fem MQA-dimensjonene, hver med en score-blokk.",
            "required": [
              "findability",
              "accessibility",
              "interoperability",
              "reusability",
              "contextuality"
            ],
            "properties": {
              "findability": {
                "type": "object",
                "additionalProperties": false,
                "description": "Poengblokk for én MQA-dimensjon.",
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "maxPoints": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                    "example": 100
                  }
                }
              },
              "accessibility": {
                "type": "object",
                "additionalProperties": false,
                "description": "Poengblokk for én MQA-dimensjon.",
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "maxPoints": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                    "example": 100
                  }
                }
              },
              "interoperability": {
                "type": "object",
                "additionalProperties": false,
                "description": "Poengblokk for én MQA-dimensjon.",
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "maxPoints": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                    "example": 100
                  }
                }
              },
              "reusability": {
                "type": "object",
                "additionalProperties": false,
                "description": "Poengblokk for én MQA-dimensjon.",
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "maxPoints": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                    "example": 100
                  }
                }
              },
              "contextuality": {
                "type": "object",
                "additionalProperties": false,
                "description": "Poengblokk for én MQA-dimensjon.",
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                    "example": 95
                  },
                  "maxPoints": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                    "example": 100
                  }
                }
              }
            }
          }
        },
        "$defs": {
          "MqaScore": {
            "type": "object",
            "additionalProperties": false,
            "description": "Poengblokk for én MQA-dimensjon.",
            "required": [
              "points",
              "percentage",
              "maxPoints"
            ],
            "properties": {
              "points": {
                "type": [
                  "number",
                  "null"
                ],
                "minimum": 0,
                "description": "Oppnådde poeng (0–maxPoints). Null hvis upstream mangler verdien.",
                "example": 95
              },
              "percentage": {
                "type": [
                  "number",
                  "null"
                ],
                "minimum": 0,
                "maximum": 100,
                "description": "Andel av maxPoints i prosent (0–100). Null hvis upstream mangler verdien.",
                "example": 95
              },
              "maxPoints": {
                "type": "integer",
                "minimum": 0,
                "description": "Maks oppnåelig i dimensjonen (Findability 100, Accessibility 100, Interoperability 110, Reusability 75, Contextuality 20).",
                "example": 100
              }
            }
          }
        },
        "example": {
          "id": "norway",
          "title": "Norway",
          "score": 372,
          "rating": "excellent",
          "maxScore": 450,
          "dimensions": {
            "findability": {
              "points": 95,
              "percentage": 95,
              "maxPoints": 100
            },
            "accessibility": {
              "points": 88,
              "percentage": 88,
              "maxPoints": 100
            },
            "interoperability": {
              "points": 99,
              "percentage": 90,
              "maxPoints": 110
            },
            "reusability": {
              "points": 72,
              "percentage": 96,
              "maxPoints": 75
            },
            "contextuality": {
              "points": 18,
              "percentage": 90,
              "maxPoints": 20
            }
          }
        }
      },
      "ConnectorDataportalSeDataset": {
        "type": "object",
        "title": "ConnectorDataportalSeDataset",
        "additionalProperties": false,
        "description": "Normalisert datasett-detalj fra Sveriges dataportal (CKAN package_show). Skalar-felt er nullbare; tags og resources er alltid lister (tomme ved fravær).",
        "required": [
          "id",
          "name",
          "title",
          "description",
          "organization",
          "license",
          "modified",
          "created",
          "tags",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-pakke-id (UUID). Null hvis utelatt av upstream.",
            "example": "a1b2c3d4-0000-1111-2222-333344445555"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-slug (URL-vennlig navn).",
            "example": "befolkningsstatistik-kommuner"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Menneskelesbar tittel.",
            "example": "Befolkningsstatistik per kommun"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Beskrivelse (CKAN `notes`).",
            "example": "Årlig befolkningsstatistik fördelad på Sveriges kommuner."
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "description": "Utgivende organisasjon (CKAN `organization.title`, ellers `name`).",
            "example": "Statistiska centralbyrån"
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lisens-tittel (CKAN `license_title`).",
            "example": "Creative Commons CC0"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret (CKAN `metadata_modified`, ISO-8601).",
            "example": "2025-03-01T09:12:00.000000"
          },
          "created": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opprettet (CKAN `metadata_created`, ISO-8601).",
            "example": "2020-01-15T08:00:00.000000"
          },
          "tags": {
            "type": "array",
            "description": "Emneord (CKAN tag-navn). Tom liste ved ingen tags.",
            "items": {
              "type": "string",
              "example": "befolkning"
            }
          },
          "resources": {
            "type": "array",
            "description": "Distribusjoner/filer knyttet til datasettet. Tom liste ved ingen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "format",
                "url"
              ],
              "description": "Én ressurs (distribusjon). Alle felt er nullbare.",
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressursnavn.",
                  "example": "Befolkning 2024 (CSV)"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Filformat (CKAN `format`).",
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Nedlastings-URL.",
                  "example": "https://catalog.dataportal.se/store/befolkning-2024.csv"
                }
              }
            }
          }
        },
        "example": {
          "id": "a1b2c3d4-0000-1111-2222-333344445555",
          "name": "befolkningsstatistik-kommuner",
          "title": "Befolkningsstatistik per kommun",
          "description": "Årlig befolkningsstatistik fördelad på Sveriges kommuner.",
          "organization": "Statistiska centralbyrån",
          "license": "Creative Commons CC0",
          "modified": "2025-03-01T09:12:00.000000",
          "created": "2020-01-15T08:00:00.000000",
          "tags": [
            "befolkning",
            "kommun"
          ],
          "resources": [
            {
              "name": "Befolkning 2024 (CSV)",
              "format": "CSV",
              "url": "https://catalog.dataportal.se/store/befolkning-2024.csv"
            }
          ]
        }
      },
      "ConnectorAvoindataFiDataset": {
        "type": "object",
        "title": "ConnectorAvoindataFiDataset",
        "additionalProperties": false,
        "description": "Normalisert datasett-detalj fra avoindata.fi (CKAN package_show).",
        "required": [
          "id",
          "name",
          "title",
          "description",
          "organization",
          "license",
          "modified",
          "created",
          "tags",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-datasettets interne id (UUID). Null hvis upstream mangler.",
            "example": "a1b2c3d4-1234-5678-9abc-def012345678"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Maskinlesbart slug/navn (URL-vennlig).",
            "example": "vaestotietokanta"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Menneskelesbar tittel på datasettet.",
            "example": "Väestötietokanta"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Fritekst-beskrivelse (CKAN `notes`).",
            "example": "Suomen väestötietoja kunnittain ja vuosittain."
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "description": "Eier-organisasjon (title, faller tilbake til name).",
            "example": "Tilastokeskus"
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lisens-tittel (CKAN `license_title`).",
            "example": "Creative Commons Attribution 4.0"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret i katalogen (CKAN `metadata_modified`, ISO-8601).",
            "example": "2026-01-15T08:30:00.000000"
          },
          "created": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opprettet i katalogen (CKAN `metadata_created`, ISO-8601).",
            "example": "2020-03-01T10:00:00.000000"
          },
          "tags": {
            "type": "array",
            "description": "Emneord (tomt array ved ingen tags).",
            "items": {
              "type": "string",
              "example": "väestö"
            }
          },
          "resources": {
            "type": "array",
            "description": "Vedlagte ressurser/filer (tomt array ved ingen ressurser).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "format",
                "url"
              ],
              "description": "Én CKAN-ressurs. Alle felt nullable — CKAN utelater det som mangler.",
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressursens visningsnavn.",
                  "example": "Väestö kunnittain 2025 (CSV)"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Filformat slik CKAN oppgir det.",
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Nedlastings-URL for ressursen.",
                  "example": "https://avoindata.suomi.fi/data/dataset/.../resource/x.csv"
                }
              }
            }
          }
        },
        "example": {
          "id": "a1b2c3d4-1234-5678-9abc-def012345678",
          "name": "vaestotietokanta",
          "title": "Väestötietokanta",
          "description": "Suomen väestötietoja kunnittain ja vuosittain.",
          "organization": "Tilastokeskus",
          "license": "Creative Commons Attribution 4.0",
          "modified": "2026-01-15T08:30:00.000000",
          "created": "2020-03-01T10:00:00.000000",
          "tags": [
            "väestö",
            "kunnat"
          ],
          "resources": [
            {
              "name": "Väestö kunnittain 2025 (CSV)",
              "format": "CSV",
              "url": "https://avoindata.suomi.fi/data/dataset/.../resource/x.csv"
            }
          ]
        }
      },
      "ConnectorEuEprtrFacility": {
        "type": "object",
        "title": "ConnectorEuEprtrFacility",
        "additionalProperties": false,
        "description": "Detaljrespons for ett anlegg i E-PRTR (European Pollutant Release and Transfer Register). Kilde: EEA Discomap, lisens CC-BY-4.0.",
        "required": [
          "facilityId",
          "facility"
        ],
        "properties": {
          "facilityId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._-]{4,32}$",
            "description": "Trimmet facility-ID fra forespørselen (ekko av path-parameteren).",
            "example": "NO.CAERS.12345"
          },
          "facility": {
            "type": "object",
            "additionalProperties": false,
            "description": "Normalisert E-PRTR-anlegg (CanonicalEprtrFacility). Alle felt er alltid til stede; tekstfelt uten rådata er null, mens facilityId/facilityName er tomme strenger ved manglende rådata.",
            "required": [
              "facilityId",
              "facilityName",
              "parentCompanyName",
              "country",
              "city",
              "postalCode",
              "nace",
              "naceSectorName",
              "longitude",
              "latitude",
              "regulatoryRegimes",
              "eprtrAnnexI",
              "nationalCompanyId",
              "publicProfileUrl",
              "source"
            ],
            "properties": {
              "facilityId": {
                "type": "string",
                "description": "Normalisert facility-ID (tom streng hvis rådata mangler).",
                "example": "NO.CAERS.12345"
              },
              "facilityName": {
                "type": "string",
                "description": "Offisielt anleggsnavn (tom streng hvis rådata mangler).",
                "example": "Hydro Aluminium Karmøy"
              },
              "parentCompanyName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Operatør / morselskap. Null hvis ikke rapportert.",
                "example": "Norsk Hydro ASA"
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^[A-Z]{2}$",
                "description": "ISO 3166-1 alpha-2 land. Null hvis ikke rapportert.",
                "example": "NO"
              },
              "city": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "By/sted. Null hvis ikke rapportert.",
                "example": "Karmøy"
              },
              "postalCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Postnummer. Null hvis ikke rapportert.",
                "example": "4265"
              },
              "nace": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "NACE-kode (NACE Rev 2). Null hvis ikke rapportert.",
                "example": "24.42"
              },
              "naceSectorName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "NACE-sektornavn. Null hvis ikke rapportert.",
                "example": "Industri"
              },
              "longitude": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "WGS-84 lengdegrad. Null hvis ikke parsbar.",
                "example": 5.2833
              },
              "latitude": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "WGS-84 breddegrad. Null hvis ikke parsbar.",
                "example": 59.2833
              },
              "regulatoryRegimes": {
                "type": "array",
                "description": "Reguleringsregimer anlegget rapporterer under (IED, EPRTR, urban-wastewater m.fl.). Tom array hvis ingen.",
                "items": {
                  "type": "string",
                  "example": "IED"
                },
                "example": [
                  "EPRTR",
                  "IED"
                ]
              },
              "eprtrAnnexI": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "E-PRTR Annex I-aktivitet. Null hvis ikke rapportert.",
                "example": "2.(c).(i)"
              },
              "nationalCompanyId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Operatørens orgnummer i hjemlandet (Brreg-orgnr i NO). Null hvis ikke rapportert.",
                "example": "914778271"
              },
              "publicProfileUrl": {
                "type": "string",
                "format": "uri",
                "description": "Dyplenke til anleggets profil i EEA E-PRTR-portalen.",
                "example": "https://prtr.eea.europa.eu/#/facility?facilityId=NO.CAERS.12345"
              },
              "source": {
                "type": "string",
                "enum": [
                  "EU-EPRTR"
                ],
                "description": "Proveniens (#74 explainability).",
                "example": "EU-EPRTR"
              }
            }
          }
        },
        "example": {
          "facilityId": "NO.CAERS.12345",
          "facility": {
            "facilityId": "NO.CAERS.12345",
            "facilityName": "Hydro Aluminium Karmøy",
            "parentCompanyName": "Norsk Hydro ASA",
            "country": "NO",
            "city": "Karmøy",
            "postalCode": "4265",
            "nace": "24.42",
            "naceSectorName": "Industri",
            "longitude": 5.2833,
            "latitude": 59.2833,
            "regulatoryRegimes": [
              "EPRTR",
              "IED"
            ],
            "eprtrAnnexI": "2.(c).(i)",
            "nationalCompanyId": "914778271",
            "publicProfileUrl": "https://prtr.eea.europa.eu/#/facility?facilityId=NO.CAERS.12345",
            "source": "EU-EPRTR"
          }
        }
      },
      "ConnectorEuEtsInstallation": {
        "type": "object",
        "title": "ConnectorEuEtsInstallation",
        "additionalProperties": false,
        "description": "Detalj for én installasjon (anlegg/operatør) i EU ETS Union Registry (EUTL).",
        "required": [
          "installationId",
          "installation"
        ],
        "properties": {
          "installationId": {
            "type": "string",
            "pattern": "^[A-Z0-9._-]{3,32}$",
            "description": "Echo av validert sti-parameter (3–32 alfa-numeriske tegn).",
            "example": "NO-123"
          },
          "installation": {
            "type": "object",
            "additionalProperties": false,
            "description": "Normalisert installasjon (CanonicalEuEtsInstallation). Anleggsattributter fra EUTL utelatt i kilden settes til null.",
            "required": [
              "installationId",
              "installationName",
              "accountHolderName",
              "country",
              "city",
              "postalCode",
              "mainActivity",
              "installationType",
              "nationalCompanyId",
              "phase",
              "status",
              "publicProfileUrl",
              "source"
            ],
            "properties": {
              "installationId": {
                "type": "string",
                "description": "Installasjons-ID i EUTL/Union Registry.",
                "example": "NO-123"
              },
              "installationName": {
                "type": "string",
                "description": "Anleggsnavn (tom streng hvis ukjent i kilden).",
                "example": "Mongstad raffineri"
              },
              "accountHolderName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Operatør / morselskap (kontoholder).",
                "example": "Equinor ASA"
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^[A-Z]{2}$",
                "description": "ISO 3166-1 alpha-2 landkode (store bokstaver).",
                "example": "NO"
              },
              "city": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Anleggets by/sted.",
                "example": "Mongstad"
              },
              "postalCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Anleggets postnummer.",
                "example": "5954"
              },
              "mainActivity": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "EU ETS-aktivitet (Annex I) slik den er oppgitt i EUTL.",
                "example": "21 Refining of mineral oil"
              },
              "installationType": {
                "type": "string",
                "enum": [
                  "POWER",
                  "INDUSTRY",
                  "AVIATION",
                  "MARITIME",
                  "OTHER"
                ],
                "description": "Utledet anleggstype fra mainActivity (default OTHER ved ukjent).",
                "example": "INDUSTRY"
              },
              "nationalCompanyId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Operatørens nasjonale orgnr (Brreg/CVR/Bolagsverket).",
                "example": "923609016"
              },
              "phase": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Compliance-fase (f.eks. 4. fase 2021–2030).",
                "example": "2021-2030"
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Drift-status (aktivt/stengt anlegg) slik EUTL oppgir.",
                "example": "OPEN"
              },
              "publicProfileUrl": {
                "type": "string",
                "format": "uri",
                "description": "Lenke til offentlig EUTL-kontoprofil.",
                "example": "https://ec.europa.eu/clima/ets/oha.do?accountID=NO-123"
              },
              "source": {
                "type": "string",
                "enum": [
                  "EU-ETS"
                ],
                "description": "Proveniens (#74 explainability).",
                "example": "EU-ETS"
              }
            }
          }
        },
        "example": {
          "installationId": "NO-123",
          "installation": {
            "installationId": "NO-123",
            "installationName": "Mongstad raffineri",
            "accountHolderName": "Equinor ASA",
            "country": "NO",
            "city": "Mongstad",
            "postalCode": "5954",
            "mainActivity": "21 Refining of mineral oil",
            "installationType": "INDUSTRY",
            "nationalCompanyId": "923609016",
            "phase": "2021-2030",
            "status": "OPEN",
            "publicProfileUrl": "https://ec.europa.eu/clima/ets/oha.do?accountID=NO-123",
            "source": "EU-ETS"
          }
        }
      },
      "ConnectorEpVotesMepVotes": {
        "type": "object",
        "title": "ConnectorEpVotesMepVotes",
        "additionalProperties": false,
        "description": "Voteringsfasit (per-vote-stemmer) for én MEP fra Europaparlamentets åpne data.",
        "required": [
          "mepId",
          "count",
          "limit",
          "votes"
        ],
        "properties": {
          "mepId": {
            "type": "string",
            "pattern": "^\\d{4,7}$",
            "description": "MEP-ID (4-7 sifre), ekko av path-parameteren.",
            "example": "124936"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall stemmer i votes[] (kan være < limit).",
            "example": 2
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Anvendt maks-antall (default 50, klippet til 1-200).",
            "example": 50
          },
          "votes": {
            "type": "array",
            "description": "Per-vote-stemmer for denne MEP-en (tom hvis ingen registrert).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "voteId",
                "voteTitle",
                "voteDate",
                "mepId",
                "position"
              ],
              "description": "Én MEP-stemme i én votering (CanonicalMEPVote).",
              "properties": {
                "voteId": {
                  "type": "string",
                  "description": "ID for selve voteringen (tom streng hvis upstream mangler den).",
                  "example": "2024-04-23-A-9-2024-0001"
                },
                "voteTitle": {
                  "type": "string",
                  "description": "Tittel på voteringen (engelsk; tom streng hvis upstream mangler den).",
                  "example": "Resolution on the rule of law"
                },
                "voteDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "description": "Dato voteringen ble holdt (YYYY-MM-DD), eller null.",
                  "example": "2024-04-23"
                },
                "mepId": {
                  "type": "string",
                  "pattern": "^\\d{4,7}$",
                  "description": "MEP-ID for stemmegiveren (samme som topp-nivå mepId).",
                  "example": "124936"
                },
                "position": {
                  "type": "string",
                  "enum": [
                    "FOR",
                    "AGAINST",
                    "ABSTAIN",
                    "NOVOTE"
                  ],
                  "description": "Normalisert stemmeposisjon (NOVOTE hvis ukjent/manglende).",
                  "example": "FOR"
                }
              }
            }
          }
        },
        "example": {
          "mepId": "124936",
          "count": 2,
          "limit": 50,
          "votes": [
            {
              "voteId": "2024-04-23-A-9-2024-0001",
              "voteTitle": "Resolution on the rule of law",
              "voteDate": "2024-04-23",
              "mepId": "124936",
              "position": "FOR"
            },
            {
              "voteId": "2024-04-23-A-9-2024-0002",
              "voteTitle": "Report on the budget discharge",
              "voteDate": "2024-04-23",
              "mepId": "124936",
              "position": "ABSTAIN"
            }
          ]
        }
      },
      "ConnectorOpendataDkDataset": {
        "type": "object",
        "title": "ConnectorOpendataDkDataset",
        "additionalProperties": false,
        "description": "Ett normalisert datasett fra opendata.dk (dansk kommunal CKAN-portal). Ingen `source`-felt — connecteren returnerer normalisert datasett direkte.",
        "required": [
          "id",
          "name",
          "title",
          "description",
          "organization",
          "license",
          "modified",
          "created",
          "tags",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-datasettets UUID (`raw.id`), eller null hvis mangler.",
            "example": "a1b2c3d4-0000-0000-0000-000000000000"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN-slug (`raw.name`) — URL-vennlig identifikator.",
            "example": "trafiktal-koebenhavn"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Menneskelesbar tittel (`raw.title`).",
            "example": "Trafiktal i København"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Fritekst-beskrivelse (CKAN `notes`).",
            "example": "Daglige trafiktal fra faste tællestationer i Københavns Kommune."
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "description": "Eier-organisasjon — `organization.title`, faller tilbake til `organization.name`, ellers null.",
            "example": "Københavns Kommune"
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lisens-tittel (CKAN `license_title`). Varierer per datasett.",
            "example": "Creative Commons Attribution 4.0"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret (CKAN `metadata_modified`, ISO-8601), eller null.",
            "example": "2026-06-09T08:12:33.000123"
          },
          "created": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opprettet (CKAN `metadata_created`, ISO-8601), eller null.",
            "example": "2024-01-15T10:00:00.000000"
          },
          "tags": {
            "type": "array",
            "description": "Emneord. Tom array hvis ingen tags. Tomme/manglende navn filtreres bort.",
            "items": {
              "type": "string",
              "example": "trafik"
            }
          },
          "resources": {
            "type": "array",
            "description": "Distribusjoner/filer knyttet til datasettet. Tom array hvis ingen.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "format",
                "url"
              ],
              "description": "Én ressurs. Alle felt nullable — CKAN utelater det som mangler.",
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressurs-navn (CKAN `resource.name`).",
                  "example": "trafiktal-2026.csv"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Filformat (CKAN `resource.format`).",
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Nedlastings-URL (CKAN `resource.url`).",
                  "example": "https://portal.opendata.dk/dataset/.../download/trafiktal-2026.csv"
                }
              }
            }
          }
        },
        "example": {
          "id": "a1b2c3d4-0000-0000-0000-000000000000",
          "name": "trafiktal-koebenhavn",
          "title": "Trafiktal i København",
          "description": "Daglige trafiktal fra faste tællestationer i Københavns Kommune.",
          "organization": "Københavns Kommune",
          "license": "Creative Commons Attribution 4.0",
          "modified": "2026-06-09T08:12:33.000123",
          "created": "2024-01-15T10:00:00.000000",
          "tags": [
            "trafik",
            "transport"
          ],
          "resources": [
            {
              "name": "trafiktal-2026.csv",
              "format": "CSV",
              "url": "https://portal.opendata.dk/dataset/.../download/trafiktal-2026.csv"
            }
          ]
        }
      },
      "ConnectorDatavejviserCkanDataset": {
        "type": "object",
        "title": "ConnectorDatavejviserCkanDataset",
        "additionalProperties": false,
        "description": "Normalisert datasett fra Danmarks nasjonale datakatalog (Datavejviser, CKAN v3 action-API). CC0, ingen auth.",
        "required": [
          "id",
          "name",
          "title",
          "description",
          "organization",
          "license",
          "modified",
          "created",
          "tags",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN package-id (UUID el. slug). Null hvis upstream mangler.",
            "example": "1a2b3c4d-5e6f-7890-abcd-1234567890ef"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "CKAN package-slug (URL-vennlig navn).",
            "example": "befolkning-pr-kommune"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Menneskelesbar tittel.",
            "example": "Befolkning pr. kommune"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Datasettbeskrivelse (CKAN `notes`).",
            "example": "Antal indbyggere fordelt på kommune, opdateret årligt."
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "description": "Eierorganisasjon — CKAN `organization.title`, ellers `organization.name`, ellers null.",
            "example": "Danmarks Statistik"
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lisens-tittel (CKAN `license_title`).",
            "example": "Creative Commons CCZero"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret-tidspunkt (CKAN `metadata_modified`, ISO-8601).",
            "example": "2026-05-01T09:30:00.000000"
          },
          "created": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opprettet-tidspunkt (CKAN `metadata_created`, ISO-8601).",
            "example": "2024-01-15T12:00:00.000000"
          },
          "tags": {
            "type": "array",
            "description": "Emneord (CKAN-tag-navn, tomme/manglende filtrert bort). Alltid array.",
            "items": {
              "type": "string",
              "example": "befolkning"
            }
          },
          "resources": {
            "type": "array",
            "description": "Distribusjoner/filer tilknyttet datasettet. Alltid array (tom ved fravær).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "format",
                "url"
              ],
              "description": "Én CKAN-ressurs. Alle felt nullbare.",
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressursnavn.",
                  "example": "befolkning-2026.csv"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Filformat slik CKAN oppgir det.",
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Nedlastings-URL.",
                  "example": "https://datavejviser-ckan.digst.govcloud.dk/dataset/.../download/befolkning-2026.csv"
                }
              }
            }
          }
        },
        "example": {
          "id": "1a2b3c4d-5e6f-7890-abcd-1234567890ef",
          "name": "befolkning-pr-kommune",
          "title": "Befolkning pr. kommune",
          "description": "Antal indbyggere fordelt på kommune, opdateret årligt.",
          "organization": "Danmarks Statistik",
          "license": "Creative Commons CCZero",
          "modified": "2026-05-01T09:30:00.000000",
          "created": "2024-01-15T12:00:00.000000",
          "tags": [
            "befolkning",
            "kommune"
          ],
          "resources": [
            {
              "name": "befolkning-2026.csv",
              "format": "CSV",
              "url": "https://datavejviser-ckan.digst.govcloud.dk/dataset/.../download/befolkning-2026.csv"
            }
          ]
        }
      },
      "ConnectorDataEuropaEuDataset": {
        "type": "object",
        "title": "ConnectorDataEuropaEuDataset",
        "additionalProperties": false,
        "description": "Normalisert EU-datasett-detalj fra data.europa.eu (Hub Search / CKAN package_show). Tekstfelt er språk-normalisert (engelsk først, ellers første tilgjengelige språk).",
        "required": [
          "id",
          "title",
          "description",
          "publisher",
          "country",
          "themes",
          "license",
          "modified",
          "issued",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Datasett-id (Hub Search `id`/`idName`, ellers CKAN `name`).",
            "example": "https://data.europa.eu/88u/dataset/example-dataset"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Datasett-tittel (språk-valgt).",
            "example": "Air quality measurements"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Datasett-beskrivelse (språk-valgt; CKAN `notes` som fallback).",
            "example": "Hourly air quality measurements across EU monitoring stations."
          },
          "publisher": {
            "type": [
              "string",
              "null"
            ],
            "description": "Utgiver (Hub Search `publisher.name`, ellers CKAN `organization.title`).",
            "example": "European Environment Agency"
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "description": "Landkode i versaler (2-bokstavs eller upstream-id), `null` hvis ukjent.",
            "example": "EU"
          },
          "themes": {
            "type": "array",
            "description": "DCAT-AP-temakoder / kategorier i versaler (kan inkludere CKAN-grupper). Alltid til stede, men kan være tom.",
            "items": {
              "type": "string",
              "example": "ENVI"
            },
            "example": [
              "ENVI",
              "HEAL"
            ]
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lisens-id eller -tittel (Hub Search lisens-objekt, ellers CKAN `license_title`/`license_id`).",
            "example": "CC0-1.0"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sist endret (ISO-8601; CKAN `metadata_modified` som fallback).",
            "example": "2026-05-01T08:00:00Z"
          },
          "issued": {
            "type": [
              "string",
              "null"
            ],
            "description": "Først publisert (ISO-8601; CKAN `metadata_created` som fallback).",
            "example": "2024-01-15T12:00:00Z"
          },
          "resources": {
            "type": "array",
            "description": "Distribusjoner/ressurser (Hub Search `distributions`, ellers CKAN `resources`). Alltid til stede, men kan være tom.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title",
                "format",
                "url"
              ],
              "description": "Én distribusjon/ressurs. Alle felt er nullable.",
              "properties": {
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ressurs-tittel (språk-valgt for distribusjoner).",
                  "example": "CSV download"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Filformat (f.eks. CSV, JSON, XML).",
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Aksess-URL (første tilgjengelige `access_url` for distribusjoner).",
                  "example": "https://data.europa.eu/data/datasets/example/download.csv"
                }
              }
            }
          }
        },
        "example": {
          "id": "https://data.europa.eu/88u/dataset/example-dataset",
          "title": "Air quality measurements",
          "description": "Hourly air quality measurements across EU monitoring stations.",
          "publisher": "European Environment Agency",
          "country": "EU",
          "themes": [
            "ENVI",
            "HEAL"
          ],
          "license": "CC0-1.0",
          "modified": "2026-05-01T08:00:00Z",
          "issued": "2024-01-15T12:00:00Z",
          "resources": [
            {
              "title": "CSV download",
              "format": "CSV",
              "url": "https://data.europa.eu/data/datasets/example/download.csv"
            }
          ]
        }
      },
      "ConnectorGeodatastyrelsenAdresse": {
        "type": "object",
        "title": "ConnectorGeodatastyrelsenAdresse",
        "additionalProperties": false,
        "description": "Kanonisk dansk adresse (DAWA / Danmarks Adressers Web API) slått opp på DAWA-UUID. Koordinater er WGS84 (EPSG:4326): x = lengdegrad, y = breddegrad.",
        "required": [
          "id",
          "betegnelse",
          "vejnavn",
          "husnr",
          "etage",
          "doer",
          "supplerendebynavn",
          "postnr",
          "postnrnavn",
          "kommunekode",
          "x",
          "y",
          "href",
          "source"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "DAWA-UUID for adressen. Null hvis upstream mangler id.",
            "example": "0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b"
          },
          "betegnelse": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sammensatt adressebetegnelse fra DAWA.",
            "example": "Rådhuspladsen 1, 1550 København V"
          },
          "vejnavn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Gate-/vejnavn.",
            "example": "Rådhuspladsen"
          },
          "husnr": {
            "type": [
              "string",
              "null"
            ],
            "description": "Husnummer (kan inkludere bokstav-suffix).",
            "example": "1"
          },
          "etage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Etasje. Null for reverse-geokodede adgangsadresser.",
            "example": "2"
          },
          "doer": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dør-/leilighetsangivelse (DAWA-feltet `dør`).",
            "example": "tv"
          },
          "supplerendebynavn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Supplerende bynavn (bydel/landsby).",
            "example": "Indre By"
          },
          "postnr": {
            "type": [
              "string",
              "null"
            ],
            "description": "Postnummer (4 siffer).",
            "pattern": "^\\d{4}$",
            "example": "1550"
          },
          "postnrnavn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Poststedsnavn.",
            "example": "København V"
          },
          "kommunekode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dansk kommunekode (4 siffer).",
            "pattern": "^\\d{4}$",
            "example": "0101"
          },
          "x": {
            "type": [
              "number",
              "null"
            ],
            "description": "WGS84 lengdegrad (longitude). Null uten matrikkelført punkt.",
            "example": 12.5683
          },
          "y": {
            "type": [
              "number",
              "null"
            ],
            "description": "WGS84 breddegrad (latitude). Null uten matrikkelført punkt.",
            "example": 55.6759
          },
          "href": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lenke til adresse-ressursen hos DAWA.",
            "example": "https://api.dataforsyningen.dk/adresser/0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b"
          },
          "source": {
            "type": "string",
            "enum": [
              "geodatastyrelsen"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "geodatastyrelsen"
          }
        },
        "example": {
          "id": "0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b",
          "betegnelse": "Rådhuspladsen 1, 1550 København V",
          "vejnavn": "Rådhuspladsen",
          "husnr": "1",
          "etage": null,
          "doer": null,
          "supplerendebynavn": null,
          "postnr": "1550",
          "postnrnavn": "København V",
          "kommunekode": "0101",
          "x": 12.5683,
          "y": 55.6759,
          "href": "https://api.dataforsyningen.dk/adresser/0a3f50a0-47b1-4892-ab12-3c4d5e6f7a8b",
          "source": "geodatastyrelsen"
        }
      },
      "ConnectorOsloBorsInstruments": {
        "type": "array",
        "title": "ConnectorOsloBorsInstruments",
        "description": "Liste over normaliserte instrumenter (aksjer m.m.) notert på Oslo Børs (Euronext). Tom array hvis ingen treff. Hvert element er ett normalisert instrument fra Euronext-API-et.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "description": "Ett normalisert instrument (`NormalizedInstrument`). Kun `id` er alltid til stede; alle øvrige felt er nullable fordi `normalizeInstrument` defaulter til `null` når upstream utelater verdien.",
          "required": [
            "id"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Stabil instrument-ID. Avledet av `id`, ev. `isin`, ev. `ticker` (tom streng hvis alle mangler).",
              "example": "NO0010096985"
            },
            "isin": {
              "type": [
                "string",
                "null"
              ],
              "description": "International Securities Identification Number.",
              "example": "NO0010096985"
            },
            "ticker": {
              "type": [
                "string",
                "null"
              ],
              "description": "Ticker-/symbolkode på markedsplassen.",
              "example": "EQNR"
            },
            "name": {
              "type": [
                "string",
                "null"
              ],
              "description": "Instrument-/selskapsnavn.",
              "example": "Equinor ASA"
            },
            "market": {
              "type": [
                "string",
                "null"
              ],
              "description": "Markedsplass-kode (MIC), f.eks. XOSL for Oslo Børs.",
              "example": "XOSL"
            },
            "currency": {
              "type": [
                "string",
                "null"
              ],
              "description": "Handelsvaluta (ISO 4217).",
              "example": "NOK"
            },
            "lastPrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Siste omsetningskurs.",
              "example": 285.4
            },
            "closingPrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Sluttkurs forrige handelsdag.",
              "example": 284.1
            },
            "openPrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Åpningskurs.",
              "example": 283.5
            },
            "highPrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Høyeste kurs i perioden.",
              "example": 287.2
            },
            "lowPrice": {
              "type": [
                "number",
                "null"
              ],
              "description": "Laveste kurs i perioden.",
              "example": 282
            },
            "volume": {
              "type": [
                "number",
                "null"
              ],
              "description": "Omsatt volum (antall andeler).",
              "example": 1543210
            },
            "turnover": {
              "type": [
                "number",
                "null"
              ],
              "description": "Omsetning i valuta.",
              "example": 440123456
            },
            "changePercent": {
              "type": [
                "number",
                "null"
              ],
              "description": "Endring i prosent fra forrige sluttkurs.",
              "example": 0.46
            },
            "changeAbsolute": {
              "type": [
                "number",
                "null"
              ],
              "description": "Endring i absolutt kursverdi fra forrige sluttkurs.",
              "example": 1.3
            },
            "sector": {
              "type": [
                "string",
                "null"
              ],
              "description": "Sektor-/bransjeklassifisering.",
              "example": "Energy"
            },
            "listDate": {
              "type": [
                "string",
                "null"
              ],
              "description": "Noteringsdato (ISO-8601-dato).",
              "example": "2001-06-18"
            }
          }
        },
        "example": [
          {
            "id": "NO0010096985",
            "isin": "NO0010096985",
            "ticker": "EQNR",
            "name": "Equinor ASA",
            "market": "XOSL",
            "currency": "NOK",
            "lastPrice": 285.4,
            "closingPrice": 284.1,
            "openPrice": 283.5,
            "highPrice": 287.2,
            "lowPrice": 282,
            "volume": 1543210,
            "turnover": 440123456,
            "changePercent": 0.46,
            "changeAbsolute": 1.3,
            "sector": "Energy",
            "listDate": "2001-06-18"
          }
        ]
      },
      "ConnectorEurlexDocument": {
        "type": "object",
        "title": "ConnectorEurlexDocument",
        "additionalProperties": false,
        "description": "Normalisert metadata for én EU-rettsakt slått opp via CELEX-nummer (EUR-Lex CELLAR SPARQL).",
        "required": [
          "celex",
          "document"
        ],
        "properties": {
          "celex": {
            "type": "string",
            "pattern": "^[0-9A-Z]{8,15}$",
            "description": "Normalisert (uppercased) CELEX-nummer fra forespørselen.",
            "example": "32016R0679"
          },
          "document": {
            "type": "object",
            "additionalProperties": false,
            "description": "Normalisert EU-rettsakt (NormalizedEULegalDoc).",
            "required": [
              "celexNumber",
              "title",
              "titleNO",
              "docType",
              "publicationDate",
              "inForceDate",
              "eeasRelevant",
              "fullTextUrl",
              "summary",
              "source"
            ],
            "properties": {
              "celexNumber": {
                "type": "string",
                "pattern": "^[0-9A-Z]{8,15}$",
                "description": "CELEX-nummer for dokumentet.",
                "example": "32016R0679"
              },
              "title": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Engelsk tittel (faller tilbake til generisk `title`); `null` hvis ikke funnet.",
                "example": "Regulation (EU) 2016/679 (General Data Protection Regulation)"
              },
              "titleNO": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Norsk tittel hvis tilgjengelig, ellers `null`.",
                "example": null
              },
              "docType": {
                "type": "string",
                "enum": [
                  "Regulation",
                  "Directive",
                  "Decision",
                  "Judgment",
                  "Recommendation",
                  "Other"
                ],
                "description": "Dokumenttype utledet fra CELEX-nummeret (inferDocType).",
                "example": "Regulation"
              },
              "publicationDate": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Publiseringsdato (ISO-8601 dato, tidsdel strippet); `null` hvis ukjent.",
                "example": "2016-04-27"
              },
              "inForceDate": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Ikrafttredelsesdato (ISO-8601 dato, tidsdel strippet); `null` hvis ukjent.",
                "example": "2016-05-24"
              },
              "eeasRelevant": {
                "type": "boolean",
                "description": "Om dokumentet er EØS-relevant (true når SPARQL `eea` = \"true\").",
                "example": true
              },
              "fullTextUrl": {
                "type": "string",
                "format": "uri",
                "description": "Lenke til fulltekst på EUR-Lex (norsk språkvariant).",
                "example": "https://eur-lex.europa.eu/legal-content/NO/TXT/?uri=CELEX:32016R0679"
              },
              "summary": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Sammendrag (ikke befolket av denne ruten — alltid `null`).",
                "example": null
              },
              "source": {
                "type": "string",
                "enum": [
                  "EUR-LEX"
                ],
                "description": "Proveniens (#74 explainability).",
                "example": "EUR-LEX"
              }
            }
          }
        },
        "example": {
          "celex": "32016R0679",
          "document": {
            "celexNumber": "32016R0679",
            "title": "Regulation (EU) 2016/679 (General Data Protection Regulation)",
            "titleNO": null,
            "docType": "Regulation",
            "publicationDate": "2016-04-27",
            "inForceDate": "2016-05-24",
            "eeasRelevant": true,
            "fullTextUrl": "https://eur-lex.europa.eu/legal-content/NO/TXT/?uri=CELEX:32016R0679",
            "summary": null,
            "source": "EUR-LEX"
          }
        }
      },
      "ConnectorEchaSubstanceSearch": {
        "type": "object",
        "title": "ConnectorEchaSubstanceSearch",
        "additionalProperties": false,
        "description": "Treffliste fra søk i ECHA C&L Inventory (European Chemicals Agency) — kjemiske stoffer med CLP-klassifisering, SVHC- og REACH-status.",
        "required": [
          "substances",
          "total",
          "page",
          "pageSize",
          "query",
          "source"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "echa"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "echa"
          },
          "query": {
            "type": "string",
            "description": "Søkestrengen som ble brukt (stoff-navn, EC-nummer eller CAS-nummer).",
            "example": "benzene"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Totalt antall treff oppgitt av ECHA (totalElements/total), eller antall elementer i denne siden hvis ECHA ikke oppgir totalsum.",
            "example": 1
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Sidenummer (0-basert).",
            "example": 0
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Antall treff per side (1–100, default 20).",
            "example": 20
          },
          "substances": {
            "type": "array",
            "description": "Stofftreff (tom array ved ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Ett normalisert stoff fra ECHA C&L Inventory.",
              "required": [
                "substanceId",
                "name",
                "ecNumber",
                "casNumber",
                "molecularFormula",
                "iupacName",
                "classification",
                "isAuthorisationRequired",
                "isRestricted",
                "isSvhc",
                "svhcStatus",
                "source"
              ],
              "properties": {
                "substanceId": {
                  "type": "string",
                  "description": "ECHA intern ID, med fallback til EC-nummer eller CAS-nummer; tom streng hvis ingen av delene finnes.",
                  "example": "100.000.567"
                },
                "name": {
                  "type": "string",
                  "description": "Stoffnavn (substanceName); \"Unknown\" hvis ECHA utelater det.",
                  "example": "Benzene"
                },
                "ecNumber": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^\\d{3}-\\d{3}-\\d$",
                  "description": "EC-nummer (format XXX-XXX-X); null hvis ukjent.",
                  "example": "200-753-7"
                },
                "casNumber": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "CAS Registry Number; null hvis ukjent.",
                  "example": "71-43-2"
                },
                "molecularFormula": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Molekylformel; null hvis ukjent.",
                  "example": "C6H6"
                },
                "iupacName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "IUPAC-navn; null hvis ukjent.",
                  "example": "benzene"
                },
                "classification": {
                  "type": "array",
                  "description": "CLP-fareklassifiseringer (tom array hvis ingen).",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Én harmonisert CLP-fareklasse.",
                    "required": [
                      "hazardClass",
                      "signalWord",
                      "hPhrases",
                      "ghsPictograms"
                    ],
                    "properties": {
                      "hazardClass": {
                        "type": "string",
                        "description": "Fareklasse; \"Unknown\" hvis ECHA utelater den.",
                        "example": "Carcinogenicity"
                      },
                      "signalWord": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Signalord (Danger/Warning); null hvis ukjent.",
                        "example": "Danger"
                      },
                      "hPhrases": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "H-fraser (faresetninger).",
                        "example": [
                          "H350",
                          "H340"
                        ]
                      },
                      "ghsPictograms": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "GHS-piktogramkoder.",
                        "example": [
                          "GHS08",
                          "GHS02"
                        ]
                      }
                    }
                  }
                },
                "isAuthorisationRequired": {
                  "type": "boolean",
                  "description": "Om stoffet krever REACH-autorisasjon.",
                  "example": false
                },
                "isRestricted": {
                  "type": "boolean",
                  "description": "Om stoffet er underlagt REACH-restriksjon.",
                  "example": true
                },
                "isSvhc": {
                  "type": "boolean",
                  "description": "Avledet flagg — true hvis svhcStatus finnes og ikke er \"NOT_SVHC\".",
                  "example": true
                },
                "svhcStatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "SVHC-status (Substance of Very High Concern); null hvis ukjent.",
                  "example": "SVHC"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "echa"
                  ],
                  "description": "Proveniens per stoff.",
                  "example": "echa"
                }
              }
            }
          }
        },
        "example": {
          "source": "echa",
          "query": "benzene",
          "total": 1,
          "page": 0,
          "pageSize": 20,
          "substances": [
            {
              "substanceId": "100.000.567",
              "name": "Benzene",
              "ecNumber": "200-753-7",
              "casNumber": "71-43-2",
              "molecularFormula": "C6H6",
              "iupacName": "benzene",
              "classification": [
                {
                  "hazardClass": "Carcinogenicity",
                  "signalWord": "Danger",
                  "hPhrases": [
                    "H350",
                    "H340"
                  ],
                  "ghsPictograms": [
                    "GHS08",
                    "GHS02"
                  ]
                }
              ],
              "isAuthorisationRequired": false,
              "isRestricted": true,
              "isSvhc": true,
              "svhcStatus": "SVHC",
              "source": "echa"
            }
          ]
        }
      },
      "ConnectorEiopaDatasets": {
        "type": "object",
        "title": "ConnectorEiopaDatasets",
        "additionalProperties": false,
        "description": "Kuratert katalog over EIOPAs åpne datasett (forsikring/pensjon, EØS). Støtter filtrering på `?topic`.",
        "required": [
          "source",
          "total",
          "totalAll",
          "filter",
          "datasets",
          "topics",
          "note"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "eiopa"
            ],
            "description": "Proveniens (#74 explainability).",
            "example": "eiopa"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Antall datasett i svaret (etter eventuell topic-filtrering).",
            "example": 7
          },
          "totalAll": {
            "type": "integer",
            "minimum": 0,
            "description": "Totalt antall datasett i katalogen (uavhengig av filter).",
            "example": 7
          },
          "filter": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Aktivt filter, eller null når `?topic` ikke er oppgitt.",
            "required": [
              "topic"
            ],
            "properties": {
              "topic": {
                "type": "string",
                "description": "Topic-verdien det ble filtrert på.",
                "example": "solvency-ii"
              }
            },
            "example": null
          },
          "datasets": {
            "type": "array",
            "description": "Katalog-datasett (filtrert på topic hvis oppgitt; tom array hvis ingen treff).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "description": "Ett katalog-datasett (EiopaDiscoveryDataset).",
              "required": [
                "id",
                "title",
                "topic",
                "description",
                "frequency",
                "formats",
                "url",
                "lastVerified"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stabil katalog-ID (slug).",
                  "example": "solvency-ii-statistics"
                },
                "title": {
                  "type": "string",
                  "description": "Menneskelig lesbar tittel.",
                  "example": "Solvency II — Kvartalsvise aggregerte statistikker"
                },
                "topic": {
                  "type": "string",
                  "enum": [
                    "solvency-ii",
                    "occupational-pensions",
                    "insurance-statistics",
                    "ibip",
                    "pension-funds",
                    "other"
                  ],
                  "description": "Tematisk kategori for datasettet.",
                  "example": "solvency-ii"
                },
                "description": {
                  "type": "string",
                  "description": "Beskrivelse av datasettets innhold og dekning.",
                  "example": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet."
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "quarterly",
                    "annual",
                    "monthly",
                    "ad-hoc"
                  ],
                  "description": "Publiseringsfrekvens hos EIOPA.",
                  "example": "quarterly"
                },
                "formats": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Tilgjengelige filformater for nedlasting.",
                  "example": [
                    "CSV",
                    "Excel"
                  ]
                },
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Kanonisk EIOPA-side for datasettet.",
                  "example": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en"
                },
                "ketlEndpoint": {
                  "type": "string",
                  "description": "KETL-rute som eksponerer datasettet, hvis tilgjengelig. Utelates for datasett uten dedikert endepunkt (f.eks. solvency-ii-qrts).",
                  "example": "/api/connectors/eiopa/datasets/solvency-ii-statistics"
                },
                "lastVerified": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "description": "Dato katalog-oppføringen sist ble verifisert (ISO-8601).",
                  "example": "2026-06-10"
                }
              }
            }
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "solvency-ii",
                "occupational-pensions",
                "insurance-statistics",
                "ibip",
                "pension-funds",
                "other"
              ]
            },
            "description": "Komplett liste over tilgjengelige topic-verdier (for ?topic-filter).",
            "example": [
              "solvency-ii",
              "occupational-pensions",
              "insurance-statistics",
              "ibip",
              "pension-funds",
              "other"
            ]
          },
          "note": {
            "type": "string",
            "description": "Fritekst-merknad om katalogens proveniens og oppdateringskadens.",
            "example": "Kuratert katalog — oppdateres manuelt mot https://www.eiopa.europa.eu/tools-and-data/data_en"
          }
        },
        "example": {
          "source": "eiopa",
          "total": 2,
          "totalAll": 7,
          "filter": {
            "topic": "solvency-ii"
          },
          "datasets": [
            {
              "id": "solvency-ii-statistics",
              "title": "Solvency II — Kvartalsvise aggregerte statistikker",
              "topic": "solvency-ii",
              "description": "Aggregert Solvency II-statistikk for EU-forsikringsselskaper: SCR-ratio, MCR-ratio, tekniske avsetninger, investeringsportefølje og premiedata. Inkluderer data per land og for hele EØS-markedet.",
              "frequency": "quarterly",
              "formats": [
                "CSV",
                "Excel"
              ],
              "url": "https://www.eiopa.europa.eu/tools-and-data/insurance-statistics_en",
              "ketlEndpoint": "/api/connectors/eiopa/datasets/solvency-ii-statistics",
              "lastVerified": "2026-06-10"
            },
            {
              "id": "solvency-ii-qrts",
              "title": "Solvency II QRTs — Kvantitative rapporteringsskjemaer",
              "topic": "solvency-ii",
              "description": "Granulære kvantitative rapporteringsskjemaer (QRT) som forsikringsselskaper rapporterer til nasjonale tilsynsmyndigheter. Inneholder detaljerte data om forsikringstekniske avsetninger, aksjeeksponering og reinvestering.",
              "frequency": "quarterly",
              "formats": [
                "XBRL",
                "Excel"
              ],
              "url": "https://www.eiopa.europa.eu/tools-and-data/solvency-ii-data_en",
              "lastVerified": "2026-06-02"
            }
          ],
          "topics": [
            "solvency-ii",
            "occupational-pensions",
            "insurance-statistics",
            "ibip",
            "pension-funds",
            "other"
          ],
          "note": "Kuratert katalog — oppdateres manuelt mot https://www.eiopa.europa.eu/tools-and-data/data_en"
        }
      },
      "ConnectorScbForetagsregistretCompany": {
        "type": "object",
        "title": "ConnectorScbForetagsregistretCompany",
        "additionalProperties": false,
        "description": "Ett normalisert svensk foretak fra SCB Företagsregistret, slått opp på 10-sifret svensk organisasjonsnummer. Statistiske foretaksattributter (SNI-bransje, sysselsettings-/omsetningsklasse, län) — den svenske motparten til brreg/cvr.",
        "required": [
          "foretag",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "foretag": {
            "type": "object",
            "additionalProperties": false,
            "description": "Det normaliserte foretaket (kanonisk, flat form).",
            "required": [
              "orgnr"
            ],
            "properties": {
              "orgnr": {
                "type": "string",
                "description": "SE organisasjonsnummer (10 siffer).",
                "example": "5560360793"
              },
              "namn": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "Volvo Aktiebolag"
              },
              "sni": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "SNI-kode (NACE Rev. 2).",
                "example": "29100"
              },
              "sniText": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Lesbar SNI-tekst (bransjebeskrivelse).",
                "example": "Tillverkning av motorfordon"
              },
              "antalAnstalldaKlass": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Sysselsettingsklasse.",
                "example": "500-999"
              },
              "omsattningsklass": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Omsetningsklasse.",
                "example": "1000-4999 Mkr"
              },
              "juridiskForm": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Juridisk form, f.eks. «AB», «HB», «EF».",
                "example": "AB"
              },
              "registreringsdatum": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "1915-05-11"
              },
              "lan": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Läns-kode (2 siffer).",
                "example": "14"
              },
              "lanNamn": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Lesbart läns-navn utledet fra `lan` der koden er kjent.",
                "example": "Västra Götalands län"
              },
              "kommunkod": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Kommunkode (4 siffer).",
                "example": "1480"
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Status, f.eks. «Aktiv» / «Avregistrerad».",
                "example": "Aktiv"
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "scb-foretagsregistret"
            ],
            "description": "Kildeindikator (konstant)."
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Når snapshotet ble hentet (ISO-8601).",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "foretag": {
            "orgnr": "5560360793",
            "namn": "Volvo Aktiebolag",
            "sni": "29100",
            "sniText": "Tillverkning av motorfordon",
            "antalAnstalldaKlass": "500-999",
            "omsattningsklass": "1000-4999 Mkr",
            "juridiskForm": "AB",
            "registreringsdatum": "1915-05-11",
            "lan": "14",
            "lanNamn": "Västra Götalands län",
            "kommunkod": "1480",
            "status": "Aktiv"
          },
          "source": "scb-foretagsregistret",
          "fetchedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorStiftelsesregisteretStiftelse": {
        "type": "object",
        "title": "ConnectorStiftelsesregisteretStiftelse",
        "additionalProperties": false,
        "description": "Én normalisert stiftelse fra Stiftelsesregisteret, slått opp på 9-sifret norsk organisasjonsnummer. Inkluderer stiftelsestype, formål, grunnkapital og forretnings-/postadresse i kanonisk form.",
        "required": [
          "data",
          "cacheStatus"
        ],
        "properties": {
          "cacheStatus": {
            "type": "string",
            "enum": [
              "hit",
              "miss"
            ],
            "description": "Om svaret ble servert fra connector-cachen eller hentet friskt."
          },
          "data": {
            "type": "object",
            "additionalProperties": false,
            "description": "Den normaliserte stiftelsen.",
            "required": [
              "orgnr",
              "navn",
              "stiftelsestype"
            ],
            "properties": {
              "orgnr": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Norsk organisasjonsnummer (9 siffer).",
                "example": "971526157"
              },
              "navn": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "Kavlifondet"
              },
              "stiftelsestype": {
                "type": "object",
                "additionalProperties": false,
                "description": "Stiftelsestype (kode + lesbar beskrivelse).",
                "required": [
                  "kode",
                  "beskrivelse"
                ],
                "properties": {
                  "kode": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "ALM"
                  },
                  "beskrivelse": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "Alminnelig stiftelse"
                  }
                }
              },
              "formaal": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Stiftelsens vedtektsfestede formål (fritekst)."
              },
              "grunnkapital": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Grunnkapital i oppgitt valuta.",
                "example": 100000
              },
              "grunnkapitalValuta": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "NOK"
              },
              "registreringsdato": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO-dato for registrering.",
                "example": "1962-01-01"
              },
              "forretningsadresse": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "description": "Forretningsadresse i normalisert form. Null hvis ikke oppgitt.",
                "properties": {
                  "adresse": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Adresselinjer."
                  },
                  "postnummer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "poststed": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kommune": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kommunenummer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "landkode": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "land": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "postadresse": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "description": "Postadresse i normalisert form. Null hvis ikke oppgitt.",
                "properties": {
                  "adresse": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Adresselinjer."
                  },
                  "postnummer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "poststed": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kommune": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kommunenummer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "landkode": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "land": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "hjemmeside": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "https://www.kavlifondet.no"
              }
            }
          }
        },
        "example": {
          "cacheStatus": "miss",
          "data": {
            "orgnr": "971526157",
            "navn": "Kavlifondet",
            "stiftelsestype": {
              "kode": "ALM",
              "beskrivelse": "Alminnelig stiftelse"
            },
            "formaal": "Å dele ut overskudd til humanitære, forskningsmessige og kulturelle formål.",
            "grunnkapital": 100000,
            "grunnkapitalValuta": "NOK",
            "registreringsdato": "1962-01-01",
            "forretningsadresse": {
              "adresse": [
                "Karvesvingen 5"
              ],
              "postnummer": "0579",
              "poststed": "OSLO",
              "kommune": "OSLO",
              "kommunenummer": "0301",
              "landkode": "NO",
              "land": "Norge"
            },
            "postadresse": null,
            "hjemmeside": "https://www.kavlifondet.no"
          }
        }
      },
      "ConnectorOrsfSkCompany": {
        "type": "object",
        "title": "ConnectorOrsfSkCompany",
        "additionalProperties": false,
        "description": "Ett normalisert slovakisk selskap slått opp på IČO. Kanonisk, flat form med juridisk form, VAT (IČ DPH), skattenummer (DIČ) og register-referanse.",
        "required": [
          "id",
          "name",
          "status",
          "country",
          "source"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "IČO — kanonisk slovakisk foretaks-id.",
            "example": "35763469"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "example": "Slovak Telekom, a. s."
          },
          "address": {
            "type": [
              "string",
              "null"
            ],
            "example": "Bajkalská 28, 817 62 Bratislava"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "unknown"
            ],
            "description": "Normalisert aktivitetsstatus."
          },
          "legalForm": {
            "type": [
              "string",
              "null"
            ],
            "description": "Juridisk form (f.eks. «a. s.», «s. r. o.»).",
            "example": "Akciová spoločnosť"
          },
          "vatId": {
            "type": [
              "string",
              "null"
            ],
            "description": "IČ DPH (VAT-nummer) hvis registrert.",
            "example": "SK2020273893"
          },
          "taxId": {
            "type": [
              "string",
              "null"
            ],
            "description": "DIČ — slovakisk skattenummer, separat fra VAT.",
            "example": "2020273893"
          },
          "register": {
            "type": [
              "string",
              "null"
            ],
            "description": "Register selskapet er ført i (Obchodný register / RPO).",
            "example": "Obchodný register"
          },
          "registerNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "Saks-/innførselsnummer i registeret.",
            "example": "2081/B"
          },
          "established": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-dato eller år som streng.",
            "example": "1999-04-01"
          },
          "country": {
            "type": "string",
            "enum": [
              "SK"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "orsf.sk"
            ]
          }
        },
        "example": {
          "id": "35763469",
          "name": "Slovak Telekom, a. s.",
          "address": "Bajkalská 28, 817 62 Bratislava",
          "status": "active",
          "legalForm": "Akciová spoločnosť",
          "vatId": "SK2020273893",
          "taxId": "2020273893",
          "register": "Obchodný register",
          "registerNumber": "2081/B",
          "established": "1999-04-01",
          "country": "SK",
          "source": "orsf.sk"
        }
      },
      "ConnectorRikEeCompany": {
        "type": "object",
        "title": "ConnectorRikEeCompany",
        "additionalProperties": false,
        "description": "Ett normalisert estisk selskap slått opp på registrikood (registreringskode). Kanonisk, flat form med navn, adresse, status og juridisk form.",
        "required": [
          "id",
          "name",
          "status",
          "country",
          "source"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "registrikood — kanonisk estisk registreringskode.",
            "example": "10137025"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "example": "Telia Eesti AS"
          },
          "address": {
            "type": [
              "string",
              "null"
            ],
            "example": "Mustamäe tee 3, Tallinn 15033"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "unknown"
            ],
            "description": "Normalisert aktivitetsstatus."
          },
          "legalForm": {
            "type": [
              "string",
              "null"
            ],
            "description": "Juridisk form (f.eks. «AS», «OÜ»).",
            "example": "Aktsiaselts"
          },
          "country": {
            "type": "string",
            "enum": [
              "EE"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "rik"
            ]
          }
        },
        "example": {
          "id": "10137025",
          "name": "Telia Eesti AS",
          "address": "Mustamäe tee 3, Tallinn 15033",
          "status": "active",
          "legalForm": "Aktsiaselts",
          "country": "EE",
          "source": "rik"
        }
      },
      "ConnectorLegemiddelverketDrug": {
        "type": "object",
        "title": "ConnectorLegemiddelverketDrug",
        "additionalProperties": false,
        "description": "Ett normalisert legemiddel fra Direktoratet for medisinske produkter (DMP), slått opp på FHIR MedicinalProduct-id. Inkluderer ATC, legemiddelform, styrke, refusjon og pris (norske kroner).",
        "required": [
          "id",
          "onMarket"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "DMP FHIR MedicinalProduct-id (kanonisk).",
            "example": "ID_0F1A2B3C-4D5E-6789-ABCD-0123456789AB"
          },
          "itemNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "Varenummer.",
            "example": "471293"
          },
          "brandName": {
            "type": [
              "string",
              "null"
            ],
            "example": "Paracet"
          },
          "atcCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "ATC-kode.",
            "example": "N02BE01"
          },
          "atcName": {
            "type": [
              "string",
              "null"
            ],
            "example": "paracetamol"
          },
          "pharmaceuticalForm": {
            "type": [
              "string",
              "null"
            ],
            "example": "Tablett"
          },
          "strength": {
            "type": [
              "string",
              "null"
            ],
            "example": "500 mg"
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ],
            "example": "20 stk"
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ],
            "example": "Karo Pharma"
          },
          "reimbursementCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "reimbursementStatus": {
            "type": [
              "string",
              "null"
            ]
          },
          "pharmacyRetailPrice": {
            "type": [
              "number",
              "null"
            ],
            "description": "Apotekets utsalgspris (AUP) i NOK.",
            "example": 39.9
          },
          "wholesalePrice": {
            "type": [
              "number",
              "null"
            ],
            "description": "Grossistpris (GIP) i NOK.",
            "example": 24.5
          },
          "onMarket": {
            "type": "boolean",
            "description": "Om legemiddelet er markedsført.",
            "example": true
          },
          "prescriptionGroup": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reseptgruppe (f.eks. «C», «F»).",
            "example": "F"
          },
          "marketingDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-dato for markedsføringsstart.",
            "example": "2005-06-01"
          },
          "withdrawalDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-dato for avregistrering. Null hvis fortsatt på markedet."
          }
        },
        "example": {
          "id": "ID_0F1A2B3C-4D5E-6789-ABCD-0123456789AB",
          "itemNumber": "471293",
          "brandName": "Paracet",
          "atcCode": "N02BE01",
          "atcName": "paracetamol",
          "pharmaceuticalForm": "Tablett",
          "strength": "500 mg",
          "packSize": "20 stk",
          "manufacturer": "Karo Pharma",
          "reimbursementCode": null,
          "reimbursementStatus": null,
          "pharmacyRetailPrice": 39.9,
          "wholesalePrice": 24.5,
          "onMarket": true,
          "prescriptionGroup": "F",
          "marketingDate": "2005-06-01",
          "withdrawalDate": null
        }
      },
      "ConnectorSkatteetatenAksjonaerShareholders": {
        "type": "object",
        "title": "ConnectorSkatteetatenAksjonaerShareholders",
        "additionalProperties": false,
        "description": "Normalisert aksjebeholdning for ett norsk AS per inntektsår, fra Skatteetatens Aksjonærregister (rapportert per 31.12.). Inneholder totaler og en rad per aksjeeier med aksjeklasse og eierandel.",
        "required": [
          "orgNr",
          "companyName",
          "incomeYear",
          "totalShares",
          "shareholderCount",
          "shareholders",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "orgNr": {
            "type": "string",
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "example": "923609016"
          },
          "companyName": {
            "type": "string",
            "example": "EQUINOR ASA"
          },
          "incomeYear": {
            "type": "integer",
            "description": "Inntektsåret beholdningen gjelder.",
            "example": 2024
          },
          "totalShares": {
            "type": "number",
            "description": "Totalt antall aksjer i selskapet for året.",
            "example": 3187500000
          },
          "shareholderCount": {
            "type": "integer",
            "description": "Antall aksjeeiere i beholdningen.",
            "example": 4
          },
          "shareholders": {
            "type": "array",
            "description": "Én rad per aksjeeier.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "shareClass",
                "shares",
                "ownershipPercent"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "example": "STATEN VED NÆRINGS- OG FISKERIDEPARTEMENTET"
                },
                "identifier": {
                  "type": "string",
                  "description": "Fødselsår eller orgnr — kan mangle for anonymiserte rader.",
                  "example": "972417874"
                },
                "shareClass": {
                  "type": "string",
                  "example": "Ordinære aksjer"
                },
                "shares": {
                  "type": "number",
                  "example": 2138896895
                },
                "ownershipPercent": {
                  "type": "number",
                  "description": "Eierandel i prosent (0–100), avrundet til 4 desimaler.",
                  "example": 67
                },
                "postalArea": {
                  "type": "string",
                  "example": "OSLO"
                },
                "countryCode": {
                  "type": "string",
                  "example": "NO"
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "Skatteetaten Aksjonærregisteret"
            ]
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "orgNr": "923609016",
          "companyName": "EQUINOR ASA",
          "incomeYear": 2024,
          "totalShares": 3187500000,
          "shareholderCount": 2,
          "shareholders": [
            {
              "name": "STATEN VED NÆRINGS- OG FISKERIDEPARTEMENTET",
              "identifier": "972417874",
              "shareClass": "Ordinære aksjer",
              "shares": 2138896895,
              "ownershipPercent": 67,
              "postalArea": "OSLO",
              "countryCode": "NO"
            },
            {
              "name": "FOLKETRYGDFONDET",
              "identifier": "971524960",
              "shareClass": "Ordinære aksjer",
              "shares": 111562500,
              "ownershipPercent": 3.5,
              "postalArea": "OSLO",
              "countryCode": "NO"
            }
          ],
          "source": "Skatteetaten Aksjonærregisteret",
          "fetchedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorSkatteetatenMvaManntallLookup": {
        "type": "object",
        "title": "ConnectorSkatteetatenMvaManntallLookup",
        "additionalProperties": false,
        "description": "MVA-registreringsstatus for ett norsk organisasjonsnummer, fra Skatteetatens MVA-manntall (CSV-uttrekk) eller Brreg-fallback. `registered`/`status` er alltid satt; dato-/kategori-felt finnes kun for den autoritative CSV-kilden.",
        "required": [
          "orgnr",
          "registered",
          "status",
          "snapshotDate",
          "source"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "description": "Norsk organisasjonsnummer (9 siffer).",
            "example": "923609016"
          },
          "registered": {
            "type": "boolean",
            "description": "Aktiv MVA-registrering per `snapshotDate`.",
            "example": true
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "deregistered",
              "unknown"
            ],
            "description": "Status mappet til diskrete tilstander."
          },
          "registrationDate": {
            "type": "string",
            "description": "ISO YYYY-MM-DD. Finnes kun for CSV-kilden.",
            "example": "1995-01-01"
          },
          "deregistrationDate": {
            "type": "string",
            "description": "ISO YYYY-MM-DD. Utelates hvis fortsatt aktiv.",
            "example": "2020-06-30"
          },
          "category": {
            "type": "string",
            "description": "Skatteetaten-kategori (`Ordinært`, `Felles` osv.).",
            "example": "Ordinært"
          },
          "companyName": {
            "type": "string",
            "description": "Selskapsnavn fra raden (best-effort — kan mangle).",
            "example": "EQUINOR ASA"
          },
          "snapshotDate": {
            "type": "string",
            "format": "date-time",
            "description": "Når snapshot ble hentet (ISO datetime). For CSV-uttrekk er dette lastetidspunktet; for Brreg-fallback er det nå-tidspunktet.",
            "example": "2026-07-01T00:00:00.000Z"
          },
          "source": {
            "type": "string",
            "enum": [
              "Skatteetaten MVA-manntall",
              "Brreg Enhetsregisteret (mva-fallback)"
            ],
            "description": "Kilde — Brreg er fallback uten dato-felter."
          }
        },
        "example": {
          "orgnr": "923609016",
          "registered": true,
          "status": "active",
          "registrationDate": "1995-01-01",
          "category": "Ordinært",
          "companyName": "EQUINOR ASA",
          "snapshotDate": "2026-07-01T00:00:00.000Z",
          "source": "Skatteetaten MVA-manntall"
        }
      },
      "ConnectorNavLonnOccupation": {
        "type": "object",
        "title": "ConnectorNavLonnOccupation",
        "additionalProperties": false,
        "description": "Lønnsdetalj for én STYRK-08-yrkeskode fra NAV-LONN (SSB). Median-/kvartil- årslønn per sektor. Lønnstall er i NOK; nullbare ved anonymisering.",
        "required": [
          "occupationCode",
          "year",
          "count",
          "entries"
        ],
        "properties": {
          "occupationCode": {
            "type": "string",
            "description": "STYRK-08-yrkeskode det ble slått opp på.",
            "example": "2511"
          },
          "year": {
            "type": [
              "string",
              "null"
            ],
            "description": "Årsfilter fra query, eller null når ikke oppgitt.",
            "example": "2023"
          },
          "count": {
            "type": "integer",
            "description": "Antall lønnsrader i `entries`.",
            "example": 4
          },
          "entries": {
            "type": "array",
            "description": "Én normalisert lønnsrad per sektor.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "occupationCode",
                "sector",
                "year",
                "source"
              ],
              "properties": {
                "occupationCode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2511"
                },
                "occupationName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Systemanalytikere/-arkitekter"
                },
                "industryCode": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "industryName": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sector": {
                  "type": "string",
                  "enum": [
                    "PRIVATE",
                    "PUBLIC",
                    "STATE",
                    "ALL"
                  ]
                },
                "year": {
                  "type": "integer",
                  "example": 2023
                },
                "medianAnnualSalary": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Median årslønn i NOK.",
                  "example": 780000
                },
                "p25": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "example": 660000
                },
                "p75": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "example": 912000
                },
                "sampleSize": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 15230
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "NAV-LONN"
                  ]
                }
              }
            }
          }
        },
        "example": {
          "occupationCode": "2511",
          "year": "2023",
          "count": 1,
          "entries": [
            {
              "occupationCode": "2511",
              "occupationName": "Systemanalytikere/-arkitekter",
              "industryCode": null,
              "industryName": null,
              "sector": "ALL",
              "year": 2023,
              "medianAnnualSalary": 780000,
              "p25": 660000,
              "p75": 912000,
              "sampleSize": 15230,
              "source": "NAV-LONN"
            }
          ]
        }
      },
      "ConnectorPatentstyretPatent": {
        "type": "object",
        "title": "ConnectorPatentstyretPatent",
        "additionalProperties": false,
        "description": "Ett patent slått opp på søknads-/registreringsnummer hos Patentstyret. `data` er den rå upstream-posten (uendret), pakket i en liten typet envelope.",
        "required": [
          "data",
          "applicationId",
          "type",
          "source"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-JSON fra Patentstyrets patentregister, videresendt verbatim. Feltstrukturen bestemmes av Patentstyret og er ikke normalisert av KETL."
          },
          "applicationId": {
            "type": "string",
            "description": "Søknads-/registreringsnummer (ekko av path-parameteret).",
            "example": "20200001"
          },
          "type": {
            "type": "string",
            "enum": [
              "patent"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "Patentstyret OpenData-external — patentstyret.no"
            ]
          }
        },
        "example": {
          "data": {
            "applicationNumber": "20200001",
            "title": "Fremgangsmåte for karbonfangst",
            "status": "Meddelt"
          },
          "applicationId": "20200001",
          "type": "patent",
          "source": "Patentstyret OpenData-external — patentstyret.no"
        }
      },
      "ConnectorPatentstyretTrademark": {
        "type": "object",
        "title": "ConnectorPatentstyretTrademark",
        "additionalProperties": false,
        "description": "Ett varemerke slått opp på søknads-/registreringsnummer hos Patentstyret. `data` er den rå upstream-posten (uendret), pakket i en liten typet envelope.",
        "required": [
          "data",
          "applicationId",
          "type",
          "source"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-JSON fra Patentstyrets varemerkeregister, videresendt verbatim. Feltstrukturen bestemmes av Patentstyret og er ikke normalisert av KETL."
          },
          "applicationId": {
            "type": "string",
            "description": "Søknads-/registreringsnummer (ekko av path-parameteret).",
            "example": "202012345"
          },
          "type": {
            "type": "string",
            "enum": [
              "trademark"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "Patentstyret OpenData-external — patentstyret.no"
            ]
          }
        },
        "example": {
          "data": {
            "applicationNumber": "202012345",
            "markText": "KETL",
            "status": "Registrert"
          },
          "applicationId": "202012345",
          "type": "trademark",
          "source": "Patentstyret OpenData-external — patentstyret.no"
        }
      },
      "ConnectorPatentstyretDesign": {
        "type": "object",
        "title": "ConnectorPatentstyretDesign",
        "additionalProperties": false,
        "description": "Ett design(mønster) slått opp på søknads-/registreringsnummer hos Patentstyret. `data` er den rå upstream-posten (uendret), pakket i en liten typet envelope.",
        "required": [
          "data",
          "applicationId",
          "type",
          "source"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-JSON fra Patentstyrets designregister, videresendt verbatim. Feltstrukturen bestemmes av Patentstyret og er ikke normalisert av KETL."
          },
          "applicationId": {
            "type": "string",
            "description": "Søknads-/registreringsnummer (ekko av path-parameteret).",
            "example": "20200456"
          },
          "type": {
            "type": "string",
            "enum": [
              "design"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "Patentstyret OpenData-external — patentstyret.no"
            ]
          }
        },
        "example": {
          "data": {
            "applicationNumber": "20200456",
            "title": "Stoldesign",
            "status": "Registrert"
          },
          "applicationId": "20200456",
          "type": "design",
          "source": "Patentstyret OpenData-external — patentstyret.no"
        }
      },
      "ConnectorNoArtskartTaxon": {
        "type": "object",
        "title": "ConnectorNoArtskartTaxon",
        "additionalProperties": false,
        "description": "Ett normalisert takson fra Artsdatabankens Artskart, slått opp på takson-id. Vitenskapelig/norsk/engelsk navn + full taksonomisk hierarki (rike → slekt).",
        "required": [
          "id",
          "source",
          "retrievedAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Takson-id (kanonisk, fra Artskart).",
            "example": "40631"
          },
          "scientificName": {
            "type": [
              "string",
              "null"
            ],
            "example": "Ursus maritimus"
          },
          "norwegianName": {
            "type": [
              "string",
              "null"
            ],
            "example": "isbjørn"
          },
          "englishName": {
            "type": [
              "string",
              "null"
            ],
            "example": "Polar bear"
          },
          "kingdom": {
            "type": [
              "string",
              "null"
            ],
            "example": "Animalia"
          },
          "phylum": {
            "type": [
              "string",
              "null"
            ],
            "example": "Chordata"
          },
          "class_": {
            "type": [
              "string",
              "null"
            ],
            "description": "Taksonomisk klasse (serialisert som `class_`).",
            "example": "Mammalia"
          },
          "order": {
            "type": [
              "string",
              "null"
            ],
            "example": "Carnivora"
          },
          "family": {
            "type": [
              "string",
              "null"
            ],
            "example": "Ursidae"
          },
          "genus": {
            "type": [
              "string",
              "null"
            ],
            "example": "Ursus"
          },
          "taxonRank": {
            "type": [
              "string",
              "null"
            ],
            "example": "Art"
          },
          "taxonStatus": {
            "type": [
              "string",
              "null"
            ],
            "example": "Gyldig"
          },
          "source": {
            "type": "string",
            "enum": [
              "no-artskart"
            ]
          },
          "retrievedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "id": "40631",
          "scientificName": "Ursus maritimus",
          "norwegianName": "isbjørn",
          "englishName": "Polar bear",
          "kingdom": "Animalia",
          "phylum": "Chordata",
          "class_": "Mammalia",
          "order": "Carnivora",
          "family": "Ursidae",
          "genus": "Ursus",
          "taxonRank": "Art",
          "taxonStatus": "Gyldig",
          "source": "no-artskart",
          "retrievedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorNaturbaseProtectedArea": {
        "type": "object",
        "title": "ConnectorNaturbaseProtectedArea",
        "additionalProperties": false,
        "description": "Ett normalisert verneområde fra Naturbase, slått opp på område-id. Verne- kategori (nasjonal + IUCN), vernedato, kommune og forvaltningsmyndighet.",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "VV00000123"
          },
          "name": {
            "type": "string",
            "description": "Områdenavn (alltid satt).",
            "example": "Rondane nasjonalpark"
          },
          "officialName": {
            "type": [
              "string",
              "null"
            ],
            "example": "Rondane nasjonalpark"
          },
          "protectionType": {
            "type": [
              "string",
              "null"
            ],
            "example": "Nasjonalpark"
          },
          "protectionTypeAggregated": {
            "type": [
              "string",
              "null"
            ],
            "example": "Nasjonalpark"
          },
          "protectionDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-dato for vernevedtak.",
            "example": "1970-12-21"
          },
          "municipality": {
            "type": [
              "string",
              "null"
            ],
            "example": "Sel"
          },
          "managementAuthority": {
            "type": [
              "string",
              "null"
            ],
            "example": "Rondane-Dovre nasjonalparkstyre"
          },
          "iucnCategory": {
            "type": [
              "string",
              "null"
            ],
            "example": "II"
          },
          "factsheetUrl": {
            "type": [
              "string",
              "null"
            ],
            "example": "https://faktaark.naturbase.no/?id=VV00000123"
          }
        },
        "example": {
          "id": "VV00000123",
          "name": "Rondane nasjonalpark",
          "officialName": "Rondane nasjonalpark",
          "protectionType": "Nasjonalpark",
          "protectionTypeAggregated": "Nasjonalpark",
          "protectionDate": "1970-12-21",
          "municipality": "Sel",
          "managementAuthority": "Rondane-Dovre nasjonalparkstyre",
          "iucnCategory": "II",
          "factsheetUrl": "https://faktaark.naturbase.no/?id=VV00000123"
        }
      },
      "ConnectorPolarinstituttPlacename": {
        "type": "object",
        "title": "ConnectorPolarinstituttPlacename",
        "additionalProperties": false,
        "description": "Ett normalisert stedsnavn fra Norsk Polarinstitutts stedsnavnregister (Svalbard/Antarktis/polare områder), slått opp på id. Inkluderer terreng-/ featuretype, status og koordinater.",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "12345"
          },
          "name": {
            "type": "string",
            "description": "Stedsnavn (alltid satt).",
            "example": "Nordenskiöldbreen"
          },
          "area": {
            "type": [
              "string",
              "null"
            ],
            "example": "Svalbard"
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "example": "Norge"
          },
          "featureType": {
            "type": [
              "string",
              "null"
            ],
            "example": "Bre"
          },
          "terrain": {
            "type": [
              "string",
              "null"
            ],
            "example": "Isbre"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "example": "Godkjent"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "type": [
              "integer",
              "null"
            ],
            "example": 1861
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ],
            "example": 78.66
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ],
            "example": 17
          }
        },
        "example": {
          "id": "12345",
          "name": "Nordenskiöldbreen",
          "area": "Svalbard",
          "country": "Norge",
          "featureType": "Bre",
          "terrain": "Isbre",
          "status": "Godkjent",
          "description": null,
          "year": 1861,
          "latitude": 78.66,
          "longitude": 17
        }
      },
      "ConnectorBrregKonkursBostyrer": {
        "type": "object",
        "title": "ConnectorBrregKonkursBostyrer",
        "additionalProperties": false,
        "description": "Bostyrere (og eventuelle fratrådte) for et norsk konkursbo, utledet fra Brregs rolleregister. Tom liste når ingen bostyrer er registrert eller roller-oppslaget ikke ga treff.",
        "required": [
          "orgnr",
          "bostyrer",
          "source"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "description": "Organisasjonsnummer (renset, 9 siffer).",
            "example": "912345678"
          },
          "bostyrer": {
            "type": "array",
            "description": "Én rad per registrert bostyrer.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "navn",
                "fratraadt",
                "inntredelsesdato",
                "fratredelsesdato"
              ],
              "properties": {
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Advokat Kari Nordmann"
                },
                "fratraadt": {
                  "type": "boolean",
                  "description": "Om bostyreren har fratrådt vervet.",
                  "example": false
                },
                "inntredelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "ISO-dato for tiltredelse.",
                  "example": "2024-03-15"
                },
                "fratredelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "ISO-dato for fratredelse. Null hvis fortsatt aktiv."
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "brreg-roller"
            ]
          }
        },
        "example": {
          "orgnr": "912345678",
          "bostyrer": [
            {
              "navn": "Advokat Kari Nordmann",
              "fratraadt": false,
              "inntredelsesdato": "2024-03-15",
              "fratredelsesdato": null
            }
          ],
          "source": "brreg-roller"
        }
      },
      "ConnectorOpencorporatesCompany": {
        "type": "object",
        "title": "ConnectorOpencorporatesCompany",
        "additionalProperties": false,
        "description": "Ett normalisert selskap fra OpenCorporates, slått opp på jurisdiksjon + selskapsnummer. Kanonisk, flat form med bransjekoder og kilde-provenans.",
        "required": [
          "companyNumber",
          "jurisdiction",
          "name",
          "industryCodes",
          "source"
        ],
        "properties": {
          "companyNumber": {
            "type": [
              "string",
              "null"
            ],
            "example": "923609016"
          },
          "jurisdiction": {
            "type": [
              "string",
              "null"
            ],
            "description": "OpenCorporates jurisdiksjonskode.",
            "example": "no"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "example": "EQUINOR ASA"
          },
          "incorporationDate": {
            "type": [
              "string",
              "null"
            ],
            "example": "1972-07-01"
          },
          "dissolutionDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyType": {
            "type": [
              "string",
              "null"
            ],
            "example": "Allmennaksjeselskap"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "example": "Active"
          },
          "registeredAddress": {
            "type": [
              "string",
              "null"
            ],
            "example": "Forusbeen 50, 4035 Stavanger, Norway"
          },
          "industryCodes": {
            "type": "array",
            "description": "Bransjekoder (kode + beskrivelse).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "code",
                "description"
              ],
              "properties": {
                "code": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "06.100"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Utvinning av råolje"
                }
              }
            }
          },
          "source": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Kilde-provenans fra OpenCorporates. Null når ikke oppgitt.",
            "properties": {
              "publisher": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "Brønnøysund Register Centre"
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "https://opencorporates.com/companies/no/923609016"
              },
              "retrievedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "2026-07-03T09:15:00.000Z"
              }
            }
          }
        },
        "example": {
          "companyNumber": "923609016",
          "jurisdiction": "no",
          "name": "EQUINOR ASA",
          "incorporationDate": "1972-07-01",
          "dissolutionDate": null,
          "companyType": "Allmennaksjeselskap",
          "status": "Active",
          "registeredAddress": "Forusbeen 50, 4035 Stavanger, Norway",
          "industryCodes": [
            {
              "code": "06.100",
              "description": "Utvinning av råolje"
            }
          ],
          "source": {
            "publisher": "Brønnøysund Register Centre",
            "url": "https://opencorporates.com/companies/no/923609016",
            "retrievedAt": "2026-07-03T09:15:00.000Z"
          }
        }
      },
      "ConnectorNvdbObjekttype": {
        "type": "object",
        "title": "ConnectorNvdbObjekttype",
        "additionalProperties": false,
        "description": "Én normalisert objekttype fra NVDB-datakatalogen, slått opp på type-id. Inkluderer kategorier og — for by-id-oppslaget — de tilhørende egenskapstypene (attributt-definisjonene).",
        "required": [
          "id",
          "navn",
          "kategorier",
          "antallEgenskapstyper"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "example": 581
          },
          "navn": {
            "type": "string",
            "example": "Tunnelløp"
          },
          "beskrivelse": {
            "type": [
              "string",
              "null"
            ]
          },
          "sosinavn": {
            "type": [
              "string",
              "null"
            ]
          },
          "kategorier": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Katalog-kategorier objekttypen tilhører.",
            "example": [
              "Vegobjekter"
            ]
          },
          "antallEgenskapstyper": {
            "type": "integer",
            "example": 42
          },
          "egenskapstyper": {
            "type": "array",
            "description": "Attributt-definisjonene for objekttypen. Inkludert i by-id-oppslaget (detalj-flagget); utelatt i liste-varianten.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "navn",
                "obligatorisk"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "example": 5530
                },
                "navn": {
                  "type": "string",
                  "example": "Lengde"
                },
                "beskrivelse": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "datatype": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Tall"
                },
                "obligatorisk": {
                  "type": "boolean",
                  "example": true
                }
              }
            }
          }
        },
        "example": {
          "id": 581,
          "navn": "Tunnelløp",
          "beskrivelse": "Et gjennomgående løp i en tunnel.",
          "sosinavn": null,
          "kategorier": [
            "Vegobjekter"
          ],
          "antallEgenskapstyper": 2,
          "egenskapstyper": [
            {
              "id": 5530,
              "navn": "Lengde",
              "beskrivelse": "Tunnelløpets lengde i meter.",
              "datatype": "Tall",
              "obligatorisk": true
            },
            {
              "id": 5531,
              "navn": "Navn",
              "beskrivelse": null,
              "datatype": "Tekst",
              "obligatorisk": false
            }
          ]
        }
      },
      "ConnectorScbForetagsregistretSearch": {
        "type": "object",
        "title": "ConnectorScbForetagsregistretSearch",
        "additionalProperties": false,
        "description": "Søketreff fra SCB Företagsregistret (filtrert på SNI/län/sysselsetting). Normaliserte svenske foretak + paginering.",
        "required": [
          "foretag",
          "total",
          "limit",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "foretag": {
            "type": "array",
            "description": "Normaliserte foretak (flat form, samme som company-oppslaget).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "orgnr"
              ],
              "properties": {
                "orgnr": {
                  "type": "string",
                  "example": "5560360793"
                },
                "namn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Volvo Aktiebolag"
                },
                "sni": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "29100"
                },
                "sniText": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Tillverkning av motorfordon"
                },
                "antalAnstalldaKlass": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "500-999"
                },
                "omsattningsklass": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1000-4999 Mkr"
                },
                "juridiskForm": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "AB"
                },
                "registreringsdatum": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1915-05-11"
                },
                "lan": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "14"
                },
                "lanNamn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Västra Götalands län"
                },
                "kommunkod": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1480"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Aktiv"
                }
              }
            }
          },
          "total": {
            "type": "integer",
            "description": "Totalt antall treff upstream (kan overstige `foretag.length`).",
            "example": 42
          },
          "limit": {
            "type": "integer",
            "example": 25
          },
          "source": {
            "type": "string",
            "enum": [
              "scb-foretagsregistret"
            ]
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "foretag": [
            {
              "orgnr": "5560360793",
              "namn": "Volvo Aktiebolag",
              "sni": "29100",
              "sniText": "Tillverkning av motorfordon",
              "antalAnstalldaKlass": "500-999",
              "omsattningsklass": "1000-4999 Mkr",
              "juridiskForm": "AB",
              "registreringsdatum": "1915-05-11",
              "lan": "14",
              "lanNamn": "Västra Götalands län",
              "kommunkod": "1480",
              "status": "Aktiv"
            }
          ],
          "total": 42,
          "limit": 25,
          "source": "scb-foretagsregistret",
          "fetchedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorOrsfSkSearch": {
        "type": "object",
        "title": "ConnectorOrsfSkSearch",
        "additionalProperties": false,
        "description": "Søketreff fra det slovakiske foretaksregisteret. Normaliserte selskaper + paginering (offset-basert).",
        "required": [
          "companies",
          "count",
          "total",
          "query",
          "limit",
          "offset"
        ],
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "status",
                "country",
                "source"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "35763469"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Slovak Telekom, a. s."
                },
                "address": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "inactive",
                    "unknown"
                  ]
                },
                "legalForm": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Akciová spoločnosť"
                },
                "vatId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "SK2020273893"
                },
                "taxId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2020273893"
                },
                "register": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Obchodný register"
                },
                "registerNumber": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2081/B"
                },
                "established": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1999-04-01"
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "SK"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "orsf.sk"
                  ]
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "description": "Antall selskaper i denne siden.",
            "example": 1
          },
          "total": {
            "type": "integer",
            "description": "Total antall treff upstream (før paginering).",
            "example": 1
          },
          "query": {
            "type": "string",
            "example": "telekom"
          },
          "limit": {
            "type": "integer",
            "example": 25
          },
          "offset": {
            "type": "integer",
            "example": 0
          }
        },
        "example": {
          "companies": [
            {
              "id": "35763469",
              "name": "Slovak Telekom, a. s.",
              "address": "Bajkalská 28, 817 62 Bratislava",
              "status": "active",
              "legalForm": "Akciová spoločnosť",
              "vatId": "SK2020273893",
              "taxId": "2020273893",
              "register": "Obchodný register",
              "registerNumber": "2081/B",
              "established": "1999-04-01",
              "country": "SK",
              "source": "orsf.sk"
            }
          ],
          "count": 1,
          "total": 1,
          "query": "telekom",
          "limit": 25,
          "offset": 0
        }
      },
      "ConnectorRikEeSearch": {
        "type": "object",
        "title": "ConnectorRikEeSearch",
        "additionalProperties": false,
        "description": "Søketreff fra det estiske foretaksregisteret. Normaliserte selskaper (kompakt form) + søkestreng.",
        "required": [
          "companies",
          "count",
          "query"
        ],
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "status",
                "country",
                "source"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "10137025"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Telia Eesti AS"
                },
                "address": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Mustamäe tee 3, Tallinn 15033"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "inactive",
                    "unknown"
                  ]
                },
                "legalForm": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Aktsiaselts"
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "EE"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "rik"
                  ]
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "query": {
            "type": "string",
            "example": "telia"
          }
        },
        "example": {
          "companies": [
            {
              "id": "10137025",
              "name": "Telia Eesti AS",
              "address": "Mustamäe tee 3, Tallinn 15033",
              "status": "active",
              "legalForm": "Aktsiaselts",
              "country": "EE",
              "source": "rik"
            }
          ],
          "count": 1,
          "query": "telia"
        }
      },
      "ConnectorLantmaterietStacItem": {
        "type": "object",
        "title": "ConnectorLantmaterietStacItem",
        "additionalProperties": false,
        "description": "Ett STAC-item (GeoJSON Feature) fra Lantmäteriets STAC-API, slått opp på collection + id. `data` er den rå STAC-featuren; øvrige felt er KETL-envelope.",
        "required": [
          "source",
          "kind",
          "query",
          "resultCount",
          "data"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "lantmateriet-stac"
            ]
          },
          "kind": {
            "type": "string",
            "enum": [
              "item"
            ],
            "description": "Oppslagstype — alltid «item» for denne ruten."
          },
          "query": {
            "type": "string",
            "description": "«{collection}/{id}» som ble slått opp.",
            "example": "hojd-grid/12345"
          },
          "resultCount": {
            "type": "integer",
            "example": 1
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå STAC Feature (GeoJSON) fra Lantmäteriet, videresendt verbatim. Følger STAC-spec (type/geometry/properties/assets/links) og normaliseres ikke."
          }
        },
        "example": {
          "source": "lantmateriet-stac",
          "kind": "item",
          "query": "hojd-grid/12345",
          "resultCount": 1,
          "data": {
            "type": "Feature",
            "id": "12345",
            "collection": "hojd-grid",
            "properties": {
              "datetime": "2025-06-01T00:00:00Z"
            }
          }
        }
      },
      "ConnectorLatviaDatagovDatastore": {
        "type": "object",
        "title": "ConnectorLatviaDatagovDatastore",
        "additionalProperties": false,
        "description": "Én paginert side med rader fra en CKAN datastore-ressurs på data.gov.lv. Kolonne-skjema i `fields`; rå rader i `records`; offset-basert paginering.",
        "required": [
          "resourceId",
          "fields",
          "records",
          "total",
          "offset",
          "limit",
          "nextOffset"
        ],
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "CKAN datastore-ressurs-id.",
            "example": "a1b2c3d4-0000-1111-2222-333344445555"
          },
          "fields": {
            "type": "array",
            "description": "Kolonne-definisjoner for datasettet.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "type"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "municipality"
                },
                "type": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "text"
                }
              }
            }
          },
          "records": {
            "type": "array",
            "description": "Rå CKAN-rader — vilkårlige nøkler bestemt av datasettet.",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "total": {
            "type": "integer",
            "description": "Totalt antall rader i ressursen.",
            "example": 1200
          },
          "offset": {
            "type": "integer",
            "example": 0
          },
          "limit": {
            "type": "integer",
            "example": 100
          },
          "nextOffset": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Offset for neste side, eller null når siste side er nådd.",
            "example": 100
          }
        },
        "example": {
          "resourceId": "a1b2c3d4-0000-1111-2222-333344445555",
          "fields": [
            {
              "id": "municipality",
              "type": "text"
            },
            {
              "id": "population",
              "type": "numeric"
            }
          ],
          "records": [
            {
              "municipality": "Rīga",
              "population": 605802
            }
          ],
          "total": 1200,
          "offset": 0,
          "limit": 100,
          "nextOffset": 100
        }
      },
      "ConnectorOpencorporatesSubresource": {
        "type": "object",
        "title": "ConnectorOpencorporatesSubresource",
        "additionalProperties": false,
        "description": "En subressurs (officers/filings/network) for et OpenCorporates-selskap. `results` er den rå upstream-nyttelasten, ikke normalisert av KETL.",
        "required": [
          "jurisdiction",
          "number",
          "subresource",
          "results"
        ],
        "properties": {
          "jurisdiction": {
            "type": "string",
            "description": "Normalisert/validert jurisdiksjonskode.",
            "example": "no"
          },
          "number": {
            "type": "string",
            "description": "Normalisert/validert selskapsnummer.",
            "example": "923609016"
          },
          "subresource": {
            "type": "string",
            "enum": [
              "officers",
              "filings",
              "network"
            ]
          },
          "results": {
            "description": "Rå upstream `value.results` videresendt verbatim (vilkårlig JSON), eller null når upstream ikke returnerte noen. Ikke normalisert av KETL.",
            "type": [
              "object",
              "array",
              "null"
            ]
          }
        },
        "example": {
          "jurisdiction": "no",
          "number": "923609016",
          "subresource": "officers",
          "results": [
            {
              "name": "Jon Erik Reinhardsen",
              "position": "styreleder"
            }
          ]
        }
      },
      "ConnectorEurostatStructure": {
        "type": "object",
        "title": "ConnectorEurostatStructure",
        "additionalProperties": false,
        "description": "Dimensjonsstrukturen til et Eurostat-datasett: hver dimensjon med sine kategorier (kode + etikett). Brukes til å bygge gyldige spørringer.",
        "required": [
          "dataset",
          "label",
          "source",
          "updated",
          "dimensions"
        ],
        "properties": {
          "dataset": {
            "type": "string",
            "description": "Datasett-kode.",
            "example": "nama_10_gdp"
          },
          "label": {
            "type": [
              "string",
              "null"
            ],
            "example": "GDP and main components (output, expenditure and income)"
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "example": "Eurostat"
          },
          "updated": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-dato for siste oppdatering upstream.",
            "example": "2025-05-20"
          },
          "dimensions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "label",
                "size",
                "categories"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "geo"
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Geopolitical entity (reporting)"
                },
                "size": {
                  "type": "integer",
                  "example": 37
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "code",
                      "label"
                    ],
                    "properties": {
                      "code": {
                        "type": "string",
                        "example": "NO"
                      },
                      "label": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Norway"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "dataset": "nama_10_gdp",
          "label": "GDP and main components",
          "source": "Eurostat",
          "updated": "2025-05-20",
          "dimensions": [
            {
              "id": "geo",
              "label": "Geopolitical entity (reporting)",
              "size": 2,
              "categories": [
                {
                  "code": "NO",
                  "label": "Norway"
                },
                {
                  "code": "SE",
                  "label": "Sweden"
                }
              ]
            }
          ]
        }
      },
      "ConnectorDataEuropaMqaCountry": {
        "type": "object",
        "title": "ConnectorDataEuropaMqaCountry",
        "additionalProperties": false,
        "description": "Metadata-kvalitetsscore (MQA) for ett land på data.europa.eu. Samlet score + rating + fem FAIR-dimensjoner (findability, accessibility, interoperability, reusability, contextuality). Hver dimensjon: points/percentage/maxPoints.",
        "required": [
          "id",
          "title",
          "score",
          "rating",
          "maxScore",
          "dimensions"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "example": "no"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "example": "Norway"
          },
          "score": {
            "type": [
              "number",
              "null"
            ],
            "description": "Samlet MQA-poengsum.",
            "example": 342
          },
          "rating": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "excellent",
              "good",
              "sufficient",
              "bad",
              null
            ],
            "description": "Kvalitetsklassifisering utledet fra `score`."
          },
          "maxScore": {
            "type": "integer",
            "description": "Maks mulig poengsum.",
            "example": 405
          },
          "dimensions": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "findability",
              "accessibility",
              "interoperability",
              "reusability",
              "contextuality"
            ],
            "properties": {
              "findability": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 95
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 95
                  },
                  "maxPoints": {
                    "type": "integer",
                    "example": 100
                  }
                }
              },
              "accessibility": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 90
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 90
                  },
                  "maxPoints": {
                    "type": "integer",
                    "example": 100
                  }
                }
              },
              "interoperability": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 92
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 83.6
                  },
                  "maxPoints": {
                    "type": "integer",
                    "example": 110
                  }
                }
              },
              "reusability": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 55
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 73.3
                  },
                  "maxPoints": {
                    "type": "integer",
                    "example": 75
                  }
                }
              },
              "contextuality": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "points",
                  "percentage",
                  "maxPoints"
                ],
                "properties": {
                  "points": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 10
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 50
                  },
                  "maxPoints": {
                    "type": "integer",
                    "example": 20
                  }
                }
              }
            }
          }
        },
        "example": {
          "id": "no",
          "title": "Norway",
          "score": 342,
          "rating": "good",
          "maxScore": 405,
          "dimensions": {
            "findability": {
              "points": 95,
              "percentage": 95,
              "maxPoints": 100
            },
            "accessibility": {
              "points": 90,
              "percentage": 90,
              "maxPoints": 100
            },
            "interoperability": {
              "points": 92,
              "percentage": 83.6,
              "maxPoints": 110
            },
            "reusability": {
              "points": 55,
              "percentage": 73.3,
              "maxPoints": 75
            },
            "contextuality": {
              "points": 10,
              "percentage": 50,
              "maxPoints": 20
            }
          }
        }
      },
      "ConnectorBrregRollerHistory": {
        "type": "object",
        "title": "ConnectorBrregRollerHistory",
        "additionalProperties": false,
        "description": "Historikk over roller (styre, daglig leder m.m.) for en norsk enhet, utledet fra Brregs rolleregister. Én rad per rolleperiode med inn-/uttredelsesdato.",
        "required": [
          "organisasjonsnummer",
          "historikk",
          "count",
          "source",
          "note"
        ],
        "properties": {
          "organisasjonsnummer": {
            "type": "string",
            "example": "923609016"
          },
          "historikk": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "rolleType",
                "person",
                "enhet",
                "inntredelsesdato",
                "fratredelsesdato"
              ],
              "properties": {
                "rolleType": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kode",
                    "beskrivelse"
                  ],
                  "properties": {
                    "kode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "LEDE"
                    },
                    "beskrivelse": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Styrets leder"
                    }
                  }
                },
                "person": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "description": "Satt når rolleinnehaveren er en person; ellers null.",
                  "properties": {
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Jon Erik Reinhardsen"
                    },
                    "fodselsdato": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "1956-01-01"
                    }
                  }
                },
                "enhet": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "description": "Satt når rolleinnehaveren er en enhet; ellers null.",
                  "properties": {
                    "organisasjonsnummer": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "inntredelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2015-05-01"
                },
                "fratredelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "source": {
            "type": "string",
            "enum": [
              "brreg"
            ]
          },
          "note": {
            "type": "string",
            "description": "Fast veiledningstekst om datakilden."
          }
        },
        "example": {
          "organisasjonsnummer": "923609016",
          "historikk": [
            {
              "rolleType": {
                "kode": "LEDE",
                "beskrivelse": "Styrets leder"
              },
              "person": {
                "navn": "Jon Erik Reinhardsen",
                "fodselsdato": "1956-01-01"
              },
              "enhet": null,
              "inntredelsesdato": "2015-05-01",
              "fratredelsesdato": null
            }
          ],
          "count": 1,
          "source": "brreg",
          "note": "Rollehistorikk utledet fra Brregs rolleregister."
        }
      },
      "ConnectorBrregEnheterUnderenheter": {
        "type": "object",
        "title": "ConnectorBrregEnheterUnderenheter",
        "additionalProperties": false,
        "description": "Underenheter (bedrifter/virksomheter) knyttet til en norsk hovedenhet, fra Brreg Enhetsregisteret. Paginert liste med normaliserte underenheter.",
        "required": [
          "orgnr",
          "underenheter",
          "totalElements",
          "pageNumber",
          "pageSize"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "description": "Hovedenhetens organisasjonsnummer.",
            "example": "923609016"
          },
          "underenheter": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "orgnr",
                "parentOrgnr",
                "navn",
                "status",
                "source"
              ],
              "properties": {
                "orgnr": {
                  "type": "string",
                  "example": "990888213"
                },
                "parentOrgnr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "923609016"
                },
                "navn": {
                  "type": "string",
                  "example": "EQUINOR ASA AVD FORNEBU"
                },
                "status": {
                  "type": "string",
                  "example": "aktiv"
                },
                "deletedDate": {
                  "type": "string",
                  "description": "ISO-dato. Utelates for aktive underenheter."
                },
                "organizationForm": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "code",
                    "description"
                  ],
                  "properties": {
                    "code": {
                      "type": "string",
                      "example": "BEDR"
                    },
                    "description": {
                      "type": "string",
                      "example": "Bedrift"
                    }
                  }
                },
                "industryCode": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "code",
                    "description"
                  ],
                  "properties": {
                    "code": {
                      "type": "string",
                      "example": "06.100"
                    },
                    "description": {
                      "type": "string",
                      "example": "Utvinning av råolje"
                    }
                  }
                },
                "address": {
                  "type": "object",
                  "additionalProperties": false,
                  "description": "Adresse — alle underfelt er valgfrie.",
                  "properties": {
                    "street": {
                      "type": "string"
                    },
                    "postalCode": {
                      "type": "string"
                    },
                    "city": {
                      "type": "string"
                    },
                    "municipality": {
                      "type": "string"
                    },
                    "municipalityCode": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string"
                    }
                  }
                },
                "employeeCount": {
                  "type": "integer",
                  "example": 120
                },
                "source": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "system",
                    "fetchedAt"
                  ],
                  "properties": {
                    "system": {
                      "type": "string",
                      "enum": [
                        "brreg"
                      ]
                    },
                    "fetchedAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Serialisert fra JS Date → ISO-8601.",
                      "example": "2026-07-03T09:15:00.000Z"
                    }
                  }
                }
              }
            }
          },
          "totalElements": {
            "type": "integer",
            "example": 45
          },
          "pageNumber": {
            "type": "integer",
            "example": 0
          },
          "pageSize": {
            "type": "integer",
            "example": 20
          }
        },
        "example": {
          "orgnr": "923609016",
          "underenheter": [
            {
              "orgnr": "990888213",
              "parentOrgnr": "923609016",
              "navn": "EQUINOR ASA AVD FORNEBU",
              "status": "aktiv",
              "organizationForm": {
                "code": "BEDR",
                "description": "Bedrift"
              },
              "industryCode": {
                "code": "06.100",
                "description": "Utvinning av råolje"
              },
              "address": {
                "postalCode": "1364",
                "city": "FORNEBU",
                "municipality": "BÆRUM",
                "country": "Norge"
              },
              "employeeCount": 120,
              "source": {
                "system": "brreg",
                "fetchedAt": "2026-07-03T09:15:00.000Z"
              }
            }
          ],
          "totalElements": 45,
          "pageNumber": 0,
          "pageSize": 20
        }
      },
      "ConnectorSsbKostraMunicipality": {
        "type": "object",
        "title": "ConnectorSsbKostraMunicipality",
        "additionalProperties": false,
        "description": "KOSTRA-nøkkeltall for én norsk kommune (SSB). Én rad per indikator med verdi, enhet, kategori og år.",
        "required": [
          "kommunenummer",
          "indicators"
        ],
        "properties": {
          "kommunenummer": {
            "type": "string",
            "example": "0301"
          },
          "kommunenavn": {
            "type": "string",
            "example": "Oslo"
          },
          "year": {
            "type": "integer",
            "example": 2024
          },
          "indicators": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "category"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "netto_driftsutgifter_grunnskole"
                },
                "name": {
                  "type": "string",
                  "example": "Netto driftsutgifter grunnskole per innbygger"
                },
                "category": {
                  "type": "string",
                  "example": "Grunnskole"
                },
                "value": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "example": 15234
                },
                "unit": {
                  "type": "string",
                  "example": "kr"
                },
                "year": {
                  "type": "integer",
                  "example": 2024
                },
                "source": {
                  "type": "string",
                  "example": "SSB KOSTRA"
                }
              }
            }
          }
        },
        "example": {
          "kommunenummer": "0301",
          "kommunenavn": "Oslo",
          "year": 2024,
          "indicators": [
            {
              "id": "netto_driftsutgifter_grunnskole",
              "name": "Netto driftsutgifter grunnskole per innbygger",
              "category": "Grunnskole",
              "value": 15234,
              "unit": "kr",
              "year": 2024,
              "source": "SSB KOSTRA"
            }
          ]
        }
      },
      "ConnectorSsbKostraBefolkning": {
        "type": "object",
        "title": "ConnectorSsbKostraBefolkning",
        "additionalProperties": false,
        "description": "Folketall-tidsserie for én norsk kommune (SSB tabell 07459), ett datapunkt per år, sortert stigende.",
        "required": [
          "kommunenummer",
          "source",
          "tableId",
          "observations"
        ],
        "properties": {
          "kommunenummer": {
            "type": "string",
            "example": "0301"
          },
          "source": {
            "type": "string",
            "enum": [
              "ssb"
            ]
          },
          "tableId": {
            "type": "string",
            "description": "SSB-tabell-id (alltid «07459» for denne ruten).",
            "example": "07459"
          },
          "observations": {
            "type": "array",
            "description": "Ett datapunkt per år, stigende.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "year",
                "innbyggere"
              ],
              "properties": {
                "year": {
                  "type": "string",
                  "example": "2024"
                },
                "innbyggere": {
                  "type": "integer",
                  "example": 709037
                }
              }
            }
          }
        },
        "example": {
          "kommunenummer": "0301",
          "source": "ssb",
          "tableId": "07459",
          "observations": [
            {
              "year": "2023",
              "innbyggere": 699827
            },
            {
              "year": "2024",
              "innbyggere": 709037
            }
          ]
        }
      },
      "ConnectorSodirOperatorSummary": {
        "type": "object",
        "title": "ConnectorSodirOperatorSummary",
        "additionalProperties": false,
        "description": "Aggregert sammendrag for én operatør på norsk sokkel (SODIR): aktive felt/ lisenser, brønner og siste 12 mnd produksjon (SODIR-enheter).",
        "required": [
          "operator",
          "activeFields",
          "fieldNames",
          "activeLicences",
          "wellboresCompleted",
          "wellboresTotal",
          "productionLatest12m",
          "source"
        ],
        "properties": {
          "operator": {
            "type": "string",
            "example": "EQUINOR ENERGY AS"
          },
          "activeFields": {
            "type": "integer",
            "example": 32
          },
          "fieldNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Feltnavn (sortert, unike, uppercase).",
            "example": [
              "TROLL",
              "JOHAN SVERDRUP"
            ]
          },
          "activeLicences": {
            "type": "integer",
            "example": 210
          },
          "wellboresCompleted": {
            "type": "integer",
            "example": 1450
          },
          "wellboresTotal": {
            "type": "integer",
            "example": 1600
          },
          "productionLatest12m": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Siste 12 mnd netto produksjon. Null uten produserende felt.",
            "required": [
              "oilNetMillSm3",
              "gasNetBillSm3",
              "condensateNetMillSm3",
              "oilEquivNetMillSm3",
              "fieldCount"
            ],
            "properties": {
              "oilNetMillSm3": {
                "type": "number",
                "example": 45.2
              },
              "gasNetBillSm3": {
                "type": "number",
                "example": 38.1
              },
              "condensateNetMillSm3": {
                "type": "number",
                "example": 2.4
              },
              "oilEquivNetMillSm3": {
                "type": "number",
                "example": 88.9
              },
              "fieldCount": {
                "type": "integer",
                "example": 32
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "sodir"
            ]
          }
        },
        "example": {
          "operator": "EQUINOR ENERGY AS",
          "activeFields": 32,
          "fieldNames": [
            "TROLL",
            "JOHAN SVERDRUP"
          ],
          "activeLicences": 210,
          "wellboresCompleted": 1450,
          "wellboresTotal": 1600,
          "productionLatest12m": {
            "oilNetMillSm3": 45.2,
            "gasNetBillSm3": 38.1,
            "condensateNetMillSm3": 2.4,
            "oilEquivNetMillSm3": 88.9,
            "fieldCount": 32
          },
          "source": "sodir"
        }
      },
      "ConnectorStortingetVotesVotering": {
        "type": "object",
        "title": "ConnectorStortingetVotesVotering",
        "additionalProperties": false,
        "description": "Resultatet av én votering i Stortinget: for/mot/ikke-tilstede, per-representant- stemmer og partifordeling.",
        "required": [
          "voteringId",
          "dato",
          "vedtatt",
          "antallFor",
          "antallMot",
          "antallIkkeTilstede",
          "stemmer",
          "partifordeling",
          "source"
        ],
        "properties": {
          "voteringId": {
            "type": "string",
            "example": "12345"
          },
          "dato": {
            "type": [
              "string",
              "null"
            ],
            "example": "2025-03-14"
          },
          "vedtatt": {
            "type": [
              "boolean",
              "null"
            ],
            "example": true
          },
          "antallFor": {
            "type": [
              "integer",
              "null"
            ],
            "example": 88
          },
          "antallMot": {
            "type": [
              "integer",
              "null"
            ],
            "example": 81
          },
          "antallIkkeTilstede": {
            "type": [
              "integer",
              "null"
            ],
            "example": 0
          },
          "stemmer": {
            "type": "array",
            "description": "Per-representant-stemmer. Tom med `?stemmer=0`.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "voteringId",
                "representantId",
                "navn",
                "partiId",
                "partiNavn",
                "stemme"
              ],
              "properties": {
                "voteringId": {
                  "type": "string",
                  "example": "12345"
                },
                "representantId": {
                  "type": "string",
                  "example": "ABC"
                },
                "navn": {
                  "type": "string",
                  "example": "Ola Nordmann"
                },
                "partiId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "A"
                },
                "partiNavn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Arbeiderpartiet"
                },
                "stemme": {
                  "type": "string",
                  "enum": [
                    "for",
                    "mot",
                    "ikke_tilstede"
                  ]
                }
              }
            }
          },
          "partifordeling": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "partiId",
                "partiNavn",
                "for",
                "mot",
                "ikkeTilstede",
                "total"
              ],
              "properties": {
                "partiId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "A"
                },
                "partiNavn": {
                  "type": "string",
                  "example": "Arbeiderpartiet"
                },
                "for": {
                  "type": "integer",
                  "example": 48
                },
                "mot": {
                  "type": "integer",
                  "example": 0
                },
                "ikkeTilstede": {
                  "type": "integer",
                  "example": 0
                },
                "total": {
                  "type": "integer",
                  "example": 48
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "STORTINGET"
            ]
          },
          "tittel": {
            "type": [
              "string",
              "null"
            ],
            "description": "Settes kun når `?sakId=` er gitt og voteringen finnes i saken."
          },
          "sakId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Settes kun når `?sakId=` er gitt."
          },
          "metadataNote": {
            "type": "string",
            "description": "Settes når `?sakId=` mangler, eller er gitt men uten treff."
          },
          "stemmerUtelatt": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Til stede og `true` kun når `?stemmer=0` ble brukt."
          }
        },
        "example": {
          "voteringId": "12345",
          "dato": "2025-03-14",
          "vedtatt": true,
          "antallFor": 88,
          "antallMot": 81,
          "antallIkkeTilstede": 0,
          "stemmer": [
            {
              "voteringId": "12345",
              "representantId": "ABC",
              "navn": "Ola Nordmann",
              "partiId": "A",
              "partiNavn": "Arbeiderpartiet",
              "stemme": "for"
            }
          ],
          "partifordeling": [
            {
              "partiId": "A",
              "partiNavn": "Arbeiderpartiet",
              "for": 48,
              "mot": 0,
              "ikkeTilstede": 0,
              "total": 48
            }
          ],
          "source": "STORTINGET",
          "metadataNote": "Oppgi ?sakId= for sakstittel."
        }
      },
      "ConnectorStortingetVotesSak": {
        "type": "object",
        "title": "ConnectorStortingetVotesSak",
        "additionalProperties": false,
        "description": "Alle voteringer knyttet til én stortingssak (uten per-representant-stemmer — bruk votering-oppslaget for detaljene).",
        "required": [
          "sakId",
          "count",
          "voteringer"
        ],
        "properties": {
          "sakId": {
            "type": "string",
            "example": "98765"
          },
          "count": {
            "type": "integer",
            "description": "Antall voteringer (= `voteringer.length`).",
            "example": 3
          },
          "voteringer": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "voteringId",
                "sakId",
                "dato",
                "tittel",
                "vedtatt",
                "antallFor",
                "antallMot",
                "antallIkkeTilstede",
                "sesjon",
                "publicUrl",
                "source"
              ],
              "properties": {
                "voteringId": {
                  "type": "string",
                  "example": "12345"
                },
                "sakId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "98765"
                },
                "dato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-03-14"
                },
                "tittel": {
                  "type": "string",
                  "example": "Voteringstema"
                },
                "vedtatt": {
                  "type": [
                    "boolean",
                    "null"
                  ],
                  "example": true
                },
                "antallFor": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 88
                },
                "antallMot": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 81
                },
                "antallIkkeTilstede": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 0
                },
                "sesjon": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2024-2025"
                },
                "publicUrl": {
                  "type": "string",
                  "example": "https://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=98765"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "STORTINGET"
                  ]
                }
              }
            }
          }
        },
        "example": {
          "sakId": "98765",
          "count": 1,
          "voteringer": [
            {
              "voteringId": "12345",
              "sakId": "98765",
              "dato": "2025-03-14",
              "tittel": "Voteringstema",
              "vedtatt": true,
              "antallFor": 88,
              "antallMot": 81,
              "antallIkkeTilstede": 0,
              "sesjon": "2024-2025",
              "publicUrl": "https://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=98765",
              "source": "STORTINGET"
            }
          ]
        }
      },
      "ConnectorStortingetKomiteMembers": {
        "type": "object",
        "title": "ConnectorStortingetKomiteMembers",
        "additionalProperties": false,
        "description": "Medlemmene i en stortingskomité, med rolle, parti og fylke per representant.",
        "required": [
          "komiteId",
          "medlemmer"
        ],
        "properties": {
          "komiteId": {
            "type": "string",
            "example": "FINANS"
          },
          "komiteNavn": {
            "type": "string",
            "example": "Finanskomiteen"
          },
          "sesjonId": {
            "type": "string",
            "example": "2024-2025"
          },
          "medlemmer": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "representantId",
                "fulltNavn",
                "fornavn",
                "etternavn",
                "varaRepresentant"
              ],
              "properties": {
                "representantId": {
                  "type": "string",
                  "example": "ABC"
                },
                "fulltNavn": {
                  "type": "string",
                  "example": "Ola Nordmann"
                },
                "fornavn": {
                  "type": "string",
                  "example": "Ola"
                },
                "etternavn": {
                  "type": "string",
                  "example": "Nordmann"
                },
                "partiId": {
                  "type": "string",
                  "example": "A"
                },
                "fylkeId": {
                  "type": "string",
                  "example": "Oslo"
                },
                "rolle": {
                  "type": "string",
                  "example": "Leder"
                },
                "rolleId": {
                  "type": "string",
                  "example": "leder"
                },
                "varaRepresentant": {
                  "type": "boolean",
                  "example": false
                },
                "komiteer": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "navn"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "example": "FINANS"
                      },
                      "navn": {
                        "type": "string",
                        "example": "Finanskomiteen"
                      }
                    }
                  }
                }
              }
            }
          },
          "note": {
            "type": "string",
            "description": "Settes når komiteen finnes men ikke har sittende medlemmer."
          }
        },
        "example": {
          "komiteId": "FINANS",
          "komiteNavn": "Finanskomiteen",
          "sesjonId": "2024-2025",
          "medlemmer": [
            {
              "representantId": "ABC",
              "fulltNavn": "Ola Nordmann",
              "fornavn": "Ola",
              "etternavn": "Nordmann",
              "partiId": "A",
              "fylkeId": "Oslo",
              "rolle": "Leder",
              "rolleId": "leder",
              "varaRepresentant": false,
              "komiteer": [
                {
                  "id": "FINANS",
                  "navn": "Finanskomiteen"
                }
              ]
            }
          ]
        }
      },
      "ConnectorNvdbVegobjekt": {
        "type": "object",
        "title": "ConnectorNvdbVegobjekt",
        "additionalProperties": false,
        "description": "Ett vegobjekt fra NVDB, slått opp på objekttype + objekt-id. Geometri (WKT), egenskaper (attributter) og kommunetilknytning.",
        "required": [
          "id",
          "typeId",
          "typeNavn",
          "geometriWkt",
          "srid",
          "egenskaper",
          "kommuner",
          "startdato",
          "sistModifisert"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "example": 85288330
          },
          "typeId": {
            "type": [
              "integer",
              "null"
            ],
            "example": 581
          },
          "typeNavn": {
            "type": "string",
            "example": "Tunnelløp"
          },
          "geometriWkt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Geometri i Well-Known Text.",
            "example": "LINESTRING (10.0 60.0, 10.1 60.1)"
          },
          "srid": {
            "type": [
              "integer",
              "null"
            ],
            "example": 5973
          },
          "egenskaper": {
            "type": "array",
            "description": "Attributter for vegobjektet. `verdi` er fri (bestemt av egenskapstypen).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "navn",
                "verdi"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "example": 5530
                },
                "navn": {
                  "type": "string",
                  "example": "Lengde"
                },
                "verdi": {
                  "description": "Fri verdi (streng/tall/bool/objekt), bestemt av egenskapstypen."
                }
              }
            }
          },
          "kommuner": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              301
            ]
          },
          "startdato": {
            "type": [
              "string",
              "null"
            ],
            "example": "2015-06-01"
          },
          "sistModifisert": {
            "type": [
              "string",
              "null"
            ],
            "example": "2024-01-10"
          }
        },
        "example": {
          "id": 85288330,
          "typeId": 581,
          "typeNavn": "Tunnelløp",
          "geometriWkt": "LINESTRING (10.0 60.0, 10.1 60.1)",
          "srid": 5973,
          "egenskaper": [
            {
              "id": 5530,
              "navn": "Lengde",
              "verdi": 1200
            }
          ],
          "kommuner": [
            301
          ],
          "startdato": "2015-06-01",
          "sistModifisert": "2024-01-10"
        }
      },
      "ConnectorNvdbOmrader": {
        "type": "array",
        "title": "ConnectorNvdbOmrader",
        "description": "Liste over NVDB-områder. `type=kommuner` → kommuner (med fylkes-referanse); `type=fylker` → fylker. Alle har `nummer` + `navn`.",
        "items": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": false,
              "description": "Kommune (returneres for `type=kommuner`).",
              "required": [
                "nummer",
                "navn",
                "fylke"
              ],
              "properties": {
                "nummer": {
                  "type": "string",
                  "example": "0301"
                },
                "navn": {
                  "type": "string",
                  "example": "Oslo"
                },
                "fylke": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 3
                }
              }
            },
            {
              "type": "object",
              "additionalProperties": false,
              "description": "Fylke (returneres for `type=fylker`).",
              "required": [
                "nummer",
                "navn"
              ],
              "properties": {
                "nummer": {
                  "type": "string",
                  "example": "03"
                },
                "navn": {
                  "type": "string",
                  "example": "Oslo"
                }
              }
            }
          ]
        },
        "example": [
          {
            "nummer": "0301",
            "navn": "Oslo",
            "fylke": 3
          },
          {
            "nummer": "1103",
            "navn": "Stavanger",
            "fylke": 11
          }
        ]
      },
      "ConnectorBrregRegnskapSummary": {
        "type": "object",
        "title": "ConnectorBrregRegnskapSummary",
        "additionalProperties": false,
        "description": "Nøkkeltall-sammendrag for siste årsregnskap for ett norsk orgnr, med utledede ratioer (egenkapitalandel, gjeldsgrad, driftsmargin) og dekningsmetadata.",
        "required": [
          "orgnr",
          "virksomhetNavn",
          "år",
          "driftsinntekter",
          "aarsresultat",
          "sumEgenkapital",
          "sumGjeld",
          "sumEiendeler",
          "egenkapitalProsent",
          "gjeldsgrad",
          "driftsmarginPct",
          "source",
          "coverage"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "description": "Organisasjonsnummer (tom streng hvis kilden manglet det).",
            "example": "923609016"
          },
          "virksomhetNavn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Beriket fra Brreg Enhet (legalName); null hvis begge kilder mangler.",
            "example": "EQUINOR ASA"
          },
          "år": {
            "type": [
              "integer",
              "null"
            ],
            "example": 2024
          },
          "driftsinntekter": {
            "type": [
              "number",
              "null"
            ],
            "example": 1200000000
          },
          "aarsresultat": {
            "type": [
              "number",
              "null"
            ],
            "example": 95000000
          },
          "sumEgenkapital": {
            "type": [
              "number",
              "null"
            ],
            "example": 500000000
          },
          "sumGjeld": {
            "type": [
              "number",
              "null"
            ],
            "example": 700000000
          },
          "sumEiendeler": {
            "type": [
              "number",
              "null"
            ],
            "example": 1200000000
          },
          "egenkapitalProsent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Egenkapitalandel i prosent.",
            "example": 41.7
          },
          "gjeldsgrad": {
            "type": [
              "number",
              "null"
            ],
            "example": 1.4
          },
          "driftsmarginPct": {
            "type": [
              "number",
              "null"
            ],
            "example": 7.9
          },
          "source": {
            "type": "string",
            "enum": [
              "brreg-regnskap"
            ]
          },
          "coverage": {
            "type": "object",
            "additionalProperties": false,
            "description": "Metadata om hvilke regnskapsår som er tilgjengelige.",
            "required": [
              "years",
              "yearsAvailable",
              "multiYear",
              "source",
              "note"
            ],
            "properties": {
              "years": {
                "type": "array",
                "items": {
                  "type": "integer"
                },
                "description": "Distinkte år, nyeste først.",
                "example": [
                  2024,
                  2023
                ]
              },
              "yearsAvailable": {
                "type": "integer",
                "example": 2
              },
              "multiYear": {
                "type": "boolean",
                "example": true
              },
              "source": {
                "type": "string",
                "enum": [
                  "brreg-latest-only",
                  "brreg-regnskap"
                ]
              },
              "note": {
                "type": "string"
              }
            }
          }
        },
        "example": {
          "orgnr": "923609016",
          "virksomhetNavn": "EQUINOR ASA",
          "år": 2024,
          "driftsinntekter": 1200000000,
          "aarsresultat": 95000000,
          "sumEgenkapital": 500000000,
          "sumGjeld": 700000000,
          "sumEiendeler": 1200000000,
          "egenkapitalProsent": 41.7,
          "gjeldsgrad": 1.4,
          "driftsmarginPct": 7.9,
          "source": "brreg-regnskap",
          "coverage": {
            "years": [
              2024,
              2023
            ],
            "yearsAvailable": 2,
            "multiYear": true,
            "source": "brreg-regnskap",
            "note": "2 regnskapsår tilgjengelig."
          }
        }
      },
      "ConnectorBrregRegnskapTrend": {
        "type": "object",
        "title": "ConnectorBrregRegnskapTrend",
        "additionalProperties": false,
        "description": "Flerårs trend for ett norsk orgnr: parallelle tidsserier for driftsinntekter, årsresultat og egenkapital (én verdi per `years`-indeks, nyeste først).",
        "required": [
          "orgnr",
          "years",
          "driftsinntekter",
          "aarsresultat",
          "egenkapital",
          "source",
          "coverage"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "example": "923609016"
          },
          "years": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Visnings-år, nyeste først.",
            "example": [
              2024,
              2023,
              2022
            ]
          },
          "driftsinntekter": {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "description": "Parallell til `years` (null der året mangler tall).",
            "example": [
              1200000000,
              1100000000,
              1000000000
            ]
          },
          "aarsresultat": {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "example": [
              95000000,
              80000000,
              60000000
            ]
          },
          "egenkapital": {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "description": "Fra summary `sumEgenkapital`, parallell til `years`.",
            "example": [
              500000000,
              460000000,
              420000000
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "brreg-regnskap"
            ]
          },
          "coverage": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "years",
              "yearsAvailable",
              "multiYear",
              "source",
              "note"
            ],
            "properties": {
              "years": {
                "type": "array",
                "items": {
                  "type": "integer"
                },
                "example": [
                  2024,
                  2023,
                  2022
                ]
              },
              "yearsAvailable": {
                "type": "integer",
                "example": 3
              },
              "multiYear": {
                "type": "boolean",
                "example": true
              },
              "source": {
                "type": "string",
                "enum": [
                  "brreg-latest-only",
                  "brreg-regnskap"
                ]
              },
              "note": {
                "type": "string"
              }
            }
          }
        },
        "example": {
          "orgnr": "923609016",
          "years": [
            2024,
            2023,
            2022
          ],
          "driftsinntekter": [
            1200000000,
            1100000000,
            1000000000
          ],
          "aarsresultat": [
            95000000,
            80000000,
            60000000
          ],
          "egenkapital": [
            500000000,
            460000000,
            420000000
          ],
          "source": "brreg-regnskap",
          "coverage": {
            "years": [
              2024,
              2023,
              2022
            ],
            "yearsAvailable": 3,
            "multiYear": true,
            "source": "brreg-regnskap",
            "note": "3 regnskapsår tilgjengelig."
          }
        }
      },
      "ConnectorDkAarsrapporterReport": {
        "type": "object",
        "title": "ConnectorDkAarsrapporterReport",
        "additionalProperties": false,
        "description": "Ett dansk årsregnskap (årsrapport) for et CVR-nummer, med utvalgte nøkkelstørrelser (omsetning, resultat før/etter skatt, egenkapital, balansesum).",
        "required": [
          "cvr",
          "source",
          "fetchedAt",
          "regnskab"
        ],
        "properties": {
          "cvr": {
            "type": "string",
            "example": "12345674"
          },
          "source": {
            "type": "string",
            "enum": [
              "dk-aarsrapporter"
            ]
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          },
          "regnskab": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "periodeFra",
              "periodeTil",
              "omsetning",
              "resultatFoerSkat",
              "resultatEfterSkat",
              "egenkapital",
              "balansesum",
              "valuta",
              "offentliggjortDato"
            ],
            "properties": {
              "id": {
                "type": "string",
                "example": "abc123"
              },
              "periodeFra": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "2024-01-01"
              },
              "periodeTil": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "2024-12-31"
              },
              "omsetning": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 5000000
              },
              "resultatFoerSkat": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 600000
              },
              "resultatEfterSkat": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 468000
              },
              "egenkapital": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 2400000
              },
              "balansesum": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 8000000
              },
              "valuta": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "DKK"
              },
              "offentliggjortDato": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "2025-05-30"
              }
            }
          }
        },
        "example": {
          "cvr": "12345674",
          "source": "dk-aarsrapporter",
          "fetchedAt": "2026-07-03T09:15:00.000Z",
          "regnskab": {
            "id": "abc123",
            "periodeFra": "2024-01-01",
            "periodeTil": "2024-12-31",
            "omsetning": 5000000,
            "resultatFoerSkat": 600000,
            "resultatEfterSkat": 468000,
            "egenkapital": 2400000,
            "balansesum": 8000000,
            "valuta": "DKK",
            "offentliggjortDato": "2025-05-30"
          }
        }
      },
      "ConnectorGleifLeiRelationship": {
        "type": "object",
        "title": "ConnectorGleifLeiRelationship",
        "additionalProperties": false,
        "description": "LEI-relasjoner for en entitet: direkte/ultimat foreldre eller barn. `related` er tom når ingen relasjon finnes (ikke en feil).",
        "required": [
          "lei",
          "kind",
          "related"
        ],
        "properties": {
          "lei": {
            "type": "string",
            "example": "5967007LIEEXZXHKQU17"
          },
          "kind": {
            "type": "string",
            "enum": [
              "direct-parent",
              "ultimate-parent",
              "direct-children",
              "ultimate-children"
            ]
          },
          "related": {
            "type": "array",
            "description": "Relaterte LEI-records (samme form som enkelt-record-oppslaget).",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "lei",
                "address"
              ],
              "properties": {
                "lei": {
                  "type": "string",
                  "example": "529900T8BM49AURSDO55"
                },
                "legalName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Equinor Energy AS"
                },
                "jurisdiction": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NO"
                },
                "registeredAs": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "948041525"
                },
                "address": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "lines",
                    "city",
                    "country",
                    "postalCode"
                  ],
                  "properties": {
                    "lines": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forusbeen 50"
                      ]
                    },
                    "city": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Stavanger"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "NO"
                    },
                    "postalCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "4035"
                    }
                  }
                },
                "entityStatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "ACTIVE"
                },
                "category": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "GENERAL"
                },
                "registrationStatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "ISSUED"
                },
                "initialRegistrationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2012-11-30T00:00:00.000Z"
                },
                "lastUpdateDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-01-15T00:00:00.000Z"
                },
                "nextRenewalDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2026-01-15T00:00:00.000Z"
                },
                "managingLou": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "529900T8BM49AURSDO55"
                }
              }
            }
          }
        },
        "example": {
          "lei": "5967007LIEEXZXHKQU17",
          "kind": "direct-children",
          "related": [
            {
              "lei": "529900T8BM49AURSDO55",
              "legalName": "Equinor Energy AS",
              "jurisdiction": "NO",
              "registeredAs": "948041525",
              "address": {
                "lines": [
                  "Forusbeen 50"
                ],
                "city": "Stavanger",
                "country": "NO",
                "postalCode": "4035"
              },
              "entityStatus": "ACTIVE",
              "category": "GENERAL",
              "registrationStatus": "ISSUED",
              "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
              "lastUpdateDate": "2025-01-15T00:00:00.000Z",
              "nextRenewalDate": "2026-01-15T00:00:00.000Z",
              "managingLou": "529900T8BM49AURSDO55"
            }
          ]
        }
      },
      "ConnectorSsbKostraBenchmark": {
        "type": "array",
        "title": "ConnectorSsbKostraBenchmark",
        "description": "KOSTRA-benchmark: én rad per kommune × indikator for en tabell, med verdi, nasjonalt snitt og percentil-rangering.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "municipalityCode",
            "municipalityName",
            "indicatorId",
            "indicatorName",
            "year",
            "value",
            "unit",
            "nationalAverage",
            "percentileRank"
          ],
          "properties": {
            "municipalityCode": {
              "type": "string",
              "example": "0301"
            },
            "municipalityName": {
              "type": "string",
              "example": "Oslo"
            },
            "indicatorId": {
              "type": "string",
              "example": "netto_driftsutgifter_grunnskole"
            },
            "indicatorName": {
              "type": "string",
              "example": "Netto driftsutgifter grunnskole per innbygger"
            },
            "year": {
              "type": "string",
              "example": "2024"
            },
            "value": {
              "type": "number",
              "description": "Indikatorverdi for kommunen (ikke null i benchmark-utvalget).",
              "example": 15234
            },
            "unit": {
              "type": "string",
              "example": "kr"
            },
            "nationalAverage": {
              "type": [
                "number",
                "null"
              ],
              "example": 14800
            },
            "percentileRank": {
              "type": [
                "number",
                "null"
              ],
              "description": "Kommunens percentil (0–100) blant sammenlignede kommuner.",
              "example": 62
            }
          }
        },
        "example": [
          {
            "municipalityCode": "0301",
            "municipalityName": "Oslo",
            "indicatorId": "netto_driftsutgifter_grunnskole",
            "indicatorName": "Netto driftsutgifter grunnskole per innbygger",
            "year": "2024",
            "value": 15234,
            "unit": "kr",
            "nationalAverage": 14800,
            "percentileRank": 62
          }
        ]
      },
      "ConnectorSelskapCompany": {
        "type": "object",
        "title": "ConnectorSelskapCompany",
        "additionalProperties": false,
        "description": "Aggregert selskapsprofil for ett norsk orgnr på tvers av flere KETL-kilder: grunndata (Brreg), regnskap, styre/ledelse, LEI, sanksjons-screening og IPR. `sources` angir hvilke kilder som faktisk bidro.",
        "required": [
          "orgnr",
          "navn",
          "status",
          "sources",
          "checkedAt"
        ],
        "properties": {
          "orgnr": {
            "type": "string",
            "example": "923609016"
          },
          "navn": {
            "type": "string",
            "example": "EQUINOR ASA"
          },
          "status": {
            "type": "string",
            "example": "aktiv"
          },
          "orgForm": {
            "type": [
              "string",
              "null"
            ],
            "example": "ASA"
          },
          "stiftetIso": {
            "type": [
              "string",
              "null"
            ],
            "example": "1972-07-01"
          },
          "ansatte": {
            "type": [
              "integer",
              "null"
            ],
            "example": 22000
          },
          "adresse": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Forretningsadresse (Brreg), alle underfelt valgfrie. Null hvis ukjent.",
            "properties": {
              "street": {
                "type": "string"
              },
              "postalCode": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "municipality": {
                "type": "string"
              },
              "municipalityCode": {
                "type": "string"
              },
              "country": {
                "type": "string"
              }
            }
          },
          "industryCode": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "required": [
              "code",
              "description"
            ],
            "properties": {
              "code": {
                "type": "string",
                "example": "06.100"
              },
              "description": {
                "type": "string",
                "example": "Utvinning av råolje"
              }
            }
          },
          "financials": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Nøkkeltall fra brreg-regnskap. Null hvis regnskap mangler.",
            "required": [
              "år",
              "valuta",
              "driftsinntekter",
              "aarsresultat",
              "sumEgenkapital",
              "sumGjeld",
              "sumEiendeler",
              "kilde"
            ],
            "properties": {
              "år": {
                "type": [
                  "integer",
                  "null"
                ],
                "example": 2024
              },
              "valuta": {
                "type": "string",
                "example": "NOK"
              },
              "driftsinntekter": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 1200000000
              },
              "aarsresultat": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 95000000
              },
              "sumEgenkapital": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 500000000
              },
              "sumGjeld": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 700000000
              },
              "sumEiendeler": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 1200000000
              },
              "kilde": {
                "type": "string",
                "enum": [
                  "brreg-regnskap"
                ]
              }
            }
          },
          "governance": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Styre/ledelse fra brreg-roller. Null hvis roller mangler. `ceo`/`chairman` er en rolle-innehaver eller null; `board` er en liste av rolle-innehavere. Rolle-innehaver: `{navn:string|null, rolle:string, rolleBeskrivelse:string, inntredelsesdato:string}`.",
            "required": [
              "ceo",
              "chairman",
              "board",
              "kilde"
            ],
            "properties": {
              "ceo": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "navn",
                  "rolle",
                  "rolleBeskrivelse",
                  "inntredelsesdato"
                ],
                "properties": {
                  "navn": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "Anders Opedal"
                  },
                  "rolle": {
                    "type": "string",
                    "example": "DAGL"
                  },
                  "rolleBeskrivelse": {
                    "type": "string",
                    "example": "Daglig leder"
                  },
                  "inntredelsesdato": {
                    "type": "string",
                    "example": "2020-11-02"
                  }
                }
              },
              "chairman": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "navn",
                  "rolle",
                  "rolleBeskrivelse",
                  "inntredelsesdato"
                ],
                "properties": {
                  "navn": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "Jon Erik Reinhardsen"
                  },
                  "rolle": {
                    "type": "string",
                    "example": "LEDE"
                  },
                  "rolleBeskrivelse": {
                    "type": "string",
                    "example": "Styrets leder"
                  },
                  "inntredelsesdato": {
                    "type": "string",
                    "example": "2015-05-01"
                  }
                }
              },
              "board": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "navn",
                    "rolle",
                    "rolleBeskrivelse",
                    "inntredelsesdato"
                  ],
                  "properties": {
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rolle": {
                      "type": "string"
                    },
                    "rolleBeskrivelse": {
                      "type": "string"
                    },
                    "inntredelsesdato": {
                      "type": "string"
                    }
                  }
                }
              },
              "kilde": {
                "type": "string",
                "enum": [
                  "brreg-roller"
                ]
              }
            }
          },
          "lei": {
            "type": [
              "string",
              "null"
            ],
            "example": "5967007LIEEXZXHKQU17"
          },
          "leiSource": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "gleif",
              null
            ]
          },
          "sanctions": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Sanksjons-screening (OpenSanctions). Null hvis ikke screenet.",
            "required": [
              "screened",
              "matched",
              "hitCount",
              "kilde",
              "screenedAt"
            ],
            "properties": {
              "screened": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "matched": {
                "type": "boolean",
                "example": false
              },
              "hitCount": {
                "type": "integer",
                "example": 0
              },
              "kilde": {
                "type": "string",
                "enum": [
                  "opensanctions"
                ]
              },
              "screenedAt": {
                "type": "string",
                "example": "2026-07-03"
              }
            }
          },
          "ipr": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "IPR-oppsummering (Patentstyret). Null hvis ikke slått opp.",
            "required": [
              "patents",
              "kilde"
            ],
            "properties": {
              "patents": {
                "type": "integer",
                "example": 12
              },
              "kilde": {
                "type": "string",
                "enum": [
                  "patentstyret"
                ]
              }
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "brreg",
                "brreg-regnskap",
                "brreg-roller",
                "gleif",
                "opensanctions",
                "patentstyret"
              ]
            },
            "description": "Hvilke kilder som faktisk bidro til profilen.",
            "example": [
              "brreg",
              "brreg-regnskap",
              "brreg-roller"
            ]
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "orgnr": "923609016",
          "navn": "EQUINOR ASA",
          "status": "aktiv",
          "orgForm": "ASA",
          "stiftetIso": "1972-07-01",
          "ansatte": 22000,
          "adresse": {
            "postalCode": "4035",
            "city": "STAVANGER",
            "municipality": "STAVANGER",
            "country": "Norge"
          },
          "industryCode": {
            "code": "06.100",
            "description": "Utvinning av råolje"
          },
          "financials": {
            "år": 2024,
            "valuta": "NOK",
            "driftsinntekter": 1200000000,
            "aarsresultat": 95000000,
            "sumEgenkapital": 500000000,
            "sumGjeld": 700000000,
            "sumEiendeler": 1200000000,
            "kilde": "brreg-regnskap"
          },
          "governance": {
            "ceo": {
              "navn": "Anders Opedal",
              "rolle": "DAGL",
              "rolleBeskrivelse": "Daglig leder",
              "inntredelsesdato": "2020-11-02"
            },
            "chairman": {
              "navn": "Jon Erik Reinhardsen",
              "rolle": "LEDE",
              "rolleBeskrivelse": "Styrets leder",
              "inntredelsesdato": "2015-05-01"
            },
            "board": [],
            "kilde": "brreg-roller"
          },
          "lei": "5967007LIEEXZXHKQU17",
          "leiSource": "gleif",
          "sanctions": {
            "screened": true,
            "matched": false,
            "hitCount": 0,
            "kilde": "opensanctions",
            "screenedAt": "2026-07-03"
          },
          "ipr": {
            "patents": 12,
            "kilde": "patentstyret"
          },
          "sources": [
            "brreg",
            "brreg-regnskap",
            "brreg-roller",
            "gleif",
            "opensanctions",
            "patentstyret"
          ],
          "checkedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorTedNotice": {
        "type": "object",
        "title": "ConnectorTedNotice",
        "additionalProperties": false,
        "description": "Ett anskaffelsesvarsel (notice) fra TED. Kjøper, frister, CPV-koder, prosedyretype og estimert verdi.",
        "required": [
          "noticeId",
          "cpvCodes"
        ],
        "properties": {
          "noticeId": {
            "type": "string",
            "example": "123456-2025"
          },
          "publicationNumber": {
            "type": "string",
            "example": "123456-2025"
          },
          "title": {
            "type": "string",
            "example": "Rammeavtale IT-konsulenttjenester"
          },
          "publicationDate": {
            "type": "string",
            "example": "2025-04-01"
          },
          "submissionDeadline": {
            "type": [
              "string",
              "null"
            ],
            "example": "2025-05-15"
          },
          "buyerName": {
            "type": "string",
            "example": "Oslo kommune"
          },
          "buyerCountry": {
            "type": "string",
            "description": "ISO-landkode (2–3 tegn).",
            "example": "NO"
          },
          "cpvCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "CPV-koder (alltid til stede, kan være tom).",
            "example": [
              "72000000"
            ]
          },
          "contractNature": {
            "type": "string",
            "example": "Tjenester"
          },
          "procedureType": {
            "type": "string",
            "example": "Åpen anbudskonkurranse"
          },
          "noticeType": {
            "type": "string",
            "example": "Kunngjøring av konkurranse"
          },
          "estimatedValue": {
            "type": [
              "number",
              "null"
            ],
            "example": 5000000
          },
          "estimatedValueCurrency": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-valutakode (3 tegn).",
            "example": "NOK"
          },
          "sourceUrl": {
            "type": "string",
            "example": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2025:TEXT:EN:HTML"
          }
        },
        "example": {
          "noticeId": "123456-2025",
          "publicationNumber": "123456-2025",
          "title": "Rammeavtale IT-konsulenttjenester",
          "publicationDate": "2025-04-01",
          "submissionDeadline": "2025-05-15",
          "buyerName": "Oslo kommune",
          "buyerCountry": "NO",
          "cpvCodes": [
            "72000000"
          ],
          "contractNature": "Tjenester",
          "procedureType": "Åpen anbudskonkurranse",
          "noticeType": "Kunngjøring av konkurranse",
          "estimatedValue": 5000000,
          "estimatedValueCurrency": "NOK",
          "sourceUrl": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2025:TEXT:EN:HTML"
        }
      },
      "ConnectorVegvesenVehicle": {
        "type": "object",
        "title": "ConnectorVegvesenVehicle",
        "additionalProperties": false,
        "description": "Ett kjøretøy slått opp på norsk registreringsnummer (Autosys). Merke, drivstoff, CO2-utslipp, totalvekt og heftelse-/tilbakekallingsstatus.",
        "required": [
          "regnr",
          "merke",
          "handelsbetegnelse",
          "forstegangsregistrertNorge",
          "kjoretoyKlasse",
          "kjoretoyKlasseBeskrivelse",
          "drivstoff",
          "co2Utslipp",
          "tillattTotalvekt",
          "registreringsstatus",
          "erHeftet",
          "erTilbakekalt"
        ],
        "properties": {
          "regnr": {
            "type": [
              "string",
              "null"
            ],
            "example": "EL12345"
          },
          "merke": {
            "type": [
              "string",
              "null"
            ],
            "example": "TESLA"
          },
          "handelsbetegnelse": {
            "type": [
              "string",
              "null"
            ],
            "example": "MODEL Y"
          },
          "forstegangsregistrertNorge": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO-dato for førstegangsregistrering i Norge.",
            "example": "2023-03-15"
          },
          "kjoretoyKlasse": {
            "type": [
              "string",
              "null"
            ],
            "example": "M1"
          },
          "kjoretoyKlasseBeskrivelse": {
            "type": [
              "string",
              "null"
            ],
            "example": "Personbil"
          },
          "drivstoff": {
            "type": [
              "string",
              "null"
            ],
            "example": "Elektrisk"
          },
          "co2Utslipp": {
            "type": [
              "number",
              "null"
            ],
            "description": "CO2-utslipp i g/km.",
            "example": 0
          },
          "tillattTotalvekt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Tillatt totalvekt i kg.",
            "example": 2500
          },
          "registreringsstatus": {
            "type": [
              "string",
              "null"
            ],
            "example": "Registrert"
          },
          "erHeftet": {
            "type": "boolean",
            "description": "Om kjøretøyet har registrert heftelse.",
            "example": false
          },
          "erTilbakekalt": {
            "type": "boolean",
            "description": "Om kjøretøyet er tilbakekalt.",
            "example": false
          }
        },
        "example": {
          "regnr": "EL12345",
          "merke": "TESLA",
          "handelsbetegnelse": "MODEL Y",
          "forstegangsregistrertNorge": "2023-03-15",
          "kjoretoyKlasse": "M1",
          "kjoretoyKlasseBeskrivelse": "Personbil",
          "drivstoff": "Elektrisk",
          "co2Utslipp": 0,
          "tillattTotalvekt": 2500,
          "registreringsstatus": "Registrert",
          "erHeftet": false,
          "erTilbakekalt": false
        }
      },
      "ConnectorWorldBankCountry": {
        "type": "object",
        "title": "ConnectorWorldBankCountry",
        "additionalProperties": false,
        "description": "Landprofil fra Verdensbanken slått opp på ISO2-kode: region, inntektsnivå, hovedstad og koordinater (koordinater som strenger).",
        "required": [
          "source",
          "id",
          "iso2",
          "name",
          "region",
          "incomeLevel",
          "capitalCity",
          "longitude",
          "latitude"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "world-bank"
            ]
          },
          "id": {
            "type": "string",
            "description": "Verdensbankens 3-tegns landkode.",
            "example": "NOR"
          },
          "iso2": {
            "type": "string",
            "example": "NO"
          },
          "name": {
            "type": "string",
            "example": "Norway"
          },
          "region": {
            "type": [
              "string",
              "null"
            ],
            "example": "Europe & Central Asia"
          },
          "incomeLevel": {
            "type": [
              "string",
              "null"
            ],
            "example": "High income"
          },
          "capitalCity": {
            "type": [
              "string",
              "null"
            ],
            "example": "Oslo"
          },
          "longitude": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lengdegrad som streng (Verdensbankens format).",
            "example": "10.7387"
          },
          "latitude": {
            "type": [
              "string",
              "null"
            ],
            "example": "59.9138"
          }
        },
        "example": {
          "source": "world-bank",
          "id": "NOR",
          "iso2": "NO",
          "name": "Norway",
          "region": "Europe & Central Asia",
          "incomeLevel": "High income",
          "capitalCity": "Oslo",
          "longitude": "10.7387",
          "latitude": "59.9138"
        }
      },
      "ConnectorBrregRegnskapEntry": {
        "type": "object",
        "title": "ConnectorBrregRegnskapEntry",
        "additionalProperties": false,
        "description": "Ett normalisert årsregnskap fra Brreg Regnskapsregisteret, slått opp på orgnr + regnskaps-id. Utledede nøkkeltall i `financials`; rå upstream-seksjoner bevart.",
        "required": [
          "id",
          "journalnr",
          "regnskapstype",
          "regnskapDokumenttype",
          "orgnr",
          "virksomhetNavn",
          "organisasjonsform",
          "periode",
          "valuta",
          "revisjon",
          "egenkapitalGjeld",
          "eiendeler",
          "resultatregnskapResultat",
          "financials",
          "raw"
        ],
        "properties": {
          "id": {
            "type": [
              "integer",
              "null"
            ],
            "example": 123456
          },
          "journalnr": {
            "type": [
              "string",
              "null"
            ],
            "example": "2024-000123"
          },
          "regnskapstype": {
            "type": [
              "string",
              "null"
            ],
            "example": "SELSKAP"
          },
          "regnskapDokumenttype": {
            "type": [
              "string",
              "null"
            ],
            "example": "ÅRSREGNSKAP"
          },
          "orgnr": {
            "type": [
              "string",
              "null"
            ],
            "example": "923609016"
          },
          "virksomhetNavn": {
            "type": [
              "string",
              "null"
            ],
            "example": "EQUINOR ASA"
          },
          "organisasjonsform": {
            "type": [
              "string",
              "null"
            ],
            "example": "ASA"
          },
          "periode": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fraDato",
              "tilDato"
            ],
            "properties": {
              "fraDato": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "2024-01-01"
              },
              "tilDato": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "2024-12-31"
              }
            }
          },
          "valuta": {
            "type": [
              "string",
              "null"
            ],
            "example": "NOK"
          },
          "revisjon": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-seksjon (revisjon), videresendt verbatim."
          },
          "egenkapitalGjeld": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-seksjon (egenkapital + gjeld)."
          },
          "eiendeler": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-seksjon (eiendeler)."
          },
          "resultatregnskapResultat": {
            "type": "object",
            "additionalProperties": true,
            "description": "Rå upstream-seksjon (resultatregnskap)."
          },
          "financials": {
            "type": "object",
            "additionalProperties": false,
            "description": "Utledede kanoniske nøkkeltall.",
            "required": [
              "netIncome",
              "totalAssets",
              "totalLiabilitiesAndEquity"
            ],
            "properties": {
              "netIncome": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 95000000
              },
              "totalAssets": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 1200000000
              },
              "totalLiabilitiesAndEquity": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 1200000000
              }
            }
          },
          "raw": {
            "type": "object",
            "additionalProperties": true,
            "description": "Hele det uendrede upstream-objektet fra Brreg."
          }
        },
        "example": {
          "id": 123456,
          "journalnr": "2024-000123",
          "regnskapstype": "SELSKAP",
          "regnskapDokumenttype": "ÅRSREGNSKAP",
          "orgnr": "923609016",
          "virksomhetNavn": "EQUINOR ASA",
          "organisasjonsform": "ASA",
          "periode": {
            "fraDato": "2024-01-01",
            "tilDato": "2024-12-31"
          },
          "valuta": "NOK",
          "revisjon": {
            "ikkeRevidertAarsregnskap": false
          },
          "egenkapitalGjeld": {},
          "eiendeler": {},
          "resultatregnskapResultat": {},
          "financials": {
            "netIncome": 95000000,
            "totalAssets": 1200000000,
            "totalLiabilitiesAndEquity": 1200000000
          },
          "raw": {
            "id": 123456
          }
        }
      },
      "ConnectorStortingetVotesPartifordeling": {
        "type": "object",
        "title": "ConnectorStortingetVotesPartifordeling",
        "additionalProperties": false,
        "description": "Partifordelingen for én votering i Stortinget (uten per-representant-stemmer): antall for/mot/ikke-tilstede aggregert per parti.",
        "required": [
          "voteringId",
          "dato",
          "vedtatt",
          "antallFor",
          "antallMot",
          "antallIkkeTilstede",
          "partifordeling",
          "source"
        ],
        "properties": {
          "voteringId": {
            "type": "string",
            "example": "12345"
          },
          "dato": {
            "type": [
              "string",
              "null"
            ],
            "example": "2025-03-14"
          },
          "vedtatt": {
            "type": [
              "boolean",
              "null"
            ],
            "example": true
          },
          "antallFor": {
            "type": [
              "integer",
              "null"
            ],
            "example": 88
          },
          "antallMot": {
            "type": [
              "integer",
              "null"
            ],
            "example": 81
          },
          "antallIkkeTilstede": {
            "type": [
              "integer",
              "null"
            ],
            "example": 0
          },
          "partifordeling": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "partiId",
                "partiNavn",
                "for",
                "mot",
                "ikkeTilstede",
                "total"
              ],
              "properties": {
                "partiId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "A"
                },
                "partiNavn": {
                  "type": "string",
                  "example": "Arbeiderpartiet"
                },
                "for": {
                  "type": "integer",
                  "example": 48
                },
                "mot": {
                  "type": "integer",
                  "example": 0
                },
                "ikkeTilstede": {
                  "type": "integer",
                  "example": 0
                },
                "total": {
                  "type": "integer",
                  "example": 48
                }
              }
            }
          },
          "source": {
            "type": "string",
            "enum": [
              "STORTINGET"
            ]
          }
        },
        "example": {
          "voteringId": "12345",
          "dato": "2025-03-14",
          "vedtatt": true,
          "antallFor": 88,
          "antallMot": 81,
          "antallIkkeTilstede": 0,
          "partifordeling": [
            {
              "partiId": "A",
              "partiNavn": "Arbeiderpartiet",
              "for": 48,
              "mot": 0,
              "ikkeTilstede": 0,
              "total": 48
            }
          ],
          "source": "STORTINGET"
        }
      },
      "ConnectorStortingetVoteringListe": {
        "type": "object",
        "title": "ConnectorStortingetVoteringListe",
        "additionalProperties": false,
        "description": "Voteringene knyttet til en stortingssak (stortinget-connector), med vedtak- status som tekst + tellinger.",
        "required": [
          "sakId",
          "voteringer"
        ],
        "properties": {
          "sakId": {
            "type": "string",
            "example": "98765"
          },
          "voteringer": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "voteringId",
                "vedtatt",
                "vedtak",
                "antallFor",
                "antallMot",
                "antallIkkeTilstede"
              ],
              "properties": {
                "voteringId": {
                  "type": "string",
                  "example": "12345"
                },
                "dato": {
                  "type": "string",
                  "example": "2025-03-14"
                },
                "vedtatt": {
                  "type": "boolean",
                  "example": true
                },
                "vedtak": {
                  "type": "string",
                  "enum": [
                    "Vedtatt",
                    "Ikke vedtatt",
                    "Ukjent"
                  ]
                },
                "antallFor": {
                  "type": "integer",
                  "example": 88
                },
                "antallMot": {
                  "type": "integer",
                  "example": 81
                },
                "antallIkkeTilstede": {
                  "type": "integer",
                  "example": 0
                }
              }
            }
          }
        },
        "example": {
          "sakId": "98765",
          "voteringer": [
            {
              "voteringId": "12345",
              "dato": "2025-03-14",
              "vedtatt": true,
              "vedtak": "Vedtatt",
              "antallFor": 88,
              "antallMot": 81,
              "antallIkkeTilstede": 0
            }
          ]
        }
      },
      "ConnectorEnturDepartures": {
        "type": "object",
        "title": "ConnectorEnturDepartures",
        "additionalProperties": false,
        "description": "Sanntids avgangstavle for ett Entur-stoppested: linje, transportmiddel, destinasjon og planlagt/forventet avgangstid med avviksmeldinger.",
        "required": [
          "stopId",
          "stopName",
          "departures"
        ],
        "properties": {
          "stopId": {
            "type": "string",
            "example": "NSR:StopPlace:337"
          },
          "stopName": {
            "type": "string",
            "example": "Oslo bussterminal"
          },
          "departures": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "line",
                "lineName",
                "transportMode",
                "destination",
                "quayId",
                "aimedDepartureTime",
                "expectedDepartureTime",
                "realtime",
                "cancelled",
                "deviations"
              ],
              "properties": {
                "line": {
                  "type": "string",
                  "example": "RUT:Line:31"
                },
                "lineName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "31"
                },
                "transportMode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "bus"
                },
                "destination": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Tonsenhagen"
                },
                "quayId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NSR:Quay:11762"
                },
                "aimedDepartureTime": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2026-07-03T09:20:00+02:00"
                },
                "expectedDepartureTime": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2026-07-03T09:22:00+02:00"
                },
                "realtime": {
                  "type": "boolean",
                  "example": true
                },
                "cancelled": {
                  "type": "boolean",
                  "example": false
                },
                "deviations": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": []
                }
              }
            }
          }
        },
        "example": {
          "stopId": "NSR:StopPlace:337",
          "stopName": "Oslo bussterminal",
          "departures": [
            {
              "line": "RUT:Line:31",
              "lineName": "31",
              "transportMode": "bus",
              "destination": "Tonsenhagen",
              "quayId": "NSR:Quay:11762",
              "aimedDepartureTime": "2026-07-03T09:20:00+02:00",
              "expectedDepartureTime": "2026-07-03T09:22:00+02:00",
              "realtime": true,
              "cancelled": false,
              "deviations": []
            }
          ]
        }
      },
      "ConnectorDkStatbankTableMetadata": {
        "type": "object",
        "title": "ConnectorDkStatbankTableMetadata",
        "additionalProperties": false,
        "description": "Metadata for én StatBank-tabell (Danmarks Statistik): tittel, enhet, periode- dekning og variabler (dimensjoner) med sine verdier. Brukes til å bygge gyldige data-uttrekk.",
        "required": [
          "id",
          "text",
          "description",
          "unit",
          "updated",
          "firstPeriod",
          "latestPeriod",
          "variables"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "FOLK1A"
          },
          "text": {
            "type": "string",
            "example": "Folketal den 1. i kvartalet"
          },
          "description": {
            "type": "string"
          },
          "unit": {
            "type": "string",
            "example": "antal"
          },
          "updated": {
            "type": "string",
            "example": "2025-05-12T08:00:00"
          },
          "firstPeriod": {
            "type": "string",
            "example": "2008K1"
          },
          "latestPeriod": {
            "type": "string",
            "example": "2025K2"
          },
          "variables": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "text",
                "elimination",
                "time",
                "values"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "OMRÅDE"
                },
                "text": {
                  "type": "string",
                  "example": "område"
                },
                "elimination": {
                  "type": "boolean",
                  "example": true
                },
                "time": {
                  "type": "boolean",
                  "example": false
                },
                "values": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "text"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "example": "000"
                      },
                      "text": {
                        "type": "string",
                        "example": "Hele landet"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "example": {
          "id": "FOLK1A",
          "text": "Folketal den 1. i kvartalet",
          "description": "",
          "unit": "antal",
          "updated": "2025-05-12T08:00:00",
          "firstPeriod": "2008K1",
          "latestPeriod": "2025K2",
          "variables": [
            {
              "id": "OMRÅDE",
              "text": "område",
              "elimination": true,
              "time": false,
              "values": [
                {
                  "id": "000",
                  "text": "Hele landet"
                }
              ]
            },
            {
              "id": "Tid",
              "text": "tid",
              "elimination": false,
              "time": true,
              "values": [
                {
                  "id": "2025K2",
                  "text": "2025K2"
                }
              ]
            }
          ]
        }
      },
      "ConnectorCvrSearch": {
        "type": "object",
        "title": "ConnectorCvrSearch",
        "additionalProperties": false,
        "description": "Fritekstsøk i det danske CVR-registeret. Treff med CVR-nummer, navn, status og adresse.",
        "required": [
          "query",
          "count",
          "results"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "novo nordisk"
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "cvr",
                "navn",
                "status",
                "adresse",
                "postnummer",
                "by",
                "branche",
                "stiftelsesdato"
              ],
              "properties": {
                "cvr": {
                  "type": "string",
                  "example": "24256790"
                },
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Novo Nordisk A/S"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NORMAL"
                },
                "adresse": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Novo Allé 1"
                },
                "postnummer": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2880"
                },
                "by": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Bagsværd"
                },
                "branche": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Fremstilling af farmaceutiske råvarer"
                },
                "stiftelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1931-12-31"
                }
              }
            }
          }
        },
        "example": {
          "query": "novo nordisk",
          "count": 1,
          "results": [
            {
              "cvr": "24256790",
              "navn": "Novo Nordisk A/S",
              "status": "NORMAL",
              "adresse": "Novo Allé 1",
              "postnummer": "2880",
              "by": "Bagsværd",
              "branche": "Fremstilling af farmaceutiske råvarer",
              "stiftelsesdato": "1931-12-31"
            }
          ]
        }
      },
      "ConnectorGleifLeiSearchPage": {
        "type": "object",
        "title": "ConnectorGleifLeiSearchPage",
        "additionalProperties": false,
        "description": "Paginert søkeside med LEI-records fra GLEIF. Hver record er en normalisert juridisk entitet.",
        "required": [
          "records",
          "total",
          "page",
          "pageSize"
        ],
        "properties": {
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "lei",
                "address"
              ],
              "properties": {
                "lei": {
                  "type": "string",
                  "example": "5967007LIEEXZXHKQU17"
                },
                "legalName": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Equinor ASA"
                },
                "jurisdiction": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NO"
                },
                "registeredAs": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "923609016"
                },
                "address": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "lines",
                    "city",
                    "country",
                    "postalCode"
                  ],
                  "properties": {
                    "lines": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forusbeen 50"
                      ]
                    },
                    "city": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Stavanger"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "NO"
                    },
                    "postalCode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "4035"
                    }
                  }
                },
                "entityStatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "ACTIVE"
                },
                "category": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "GENERAL"
                },
                "registrationStatus": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "ISSUED"
                },
                "initialRegistrationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2012-11-30T00:00:00.000Z"
                },
                "lastUpdateDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-01-15T00:00:00.000Z"
                },
                "nextRenewalDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2026-01-15T00:00:00.000Z"
                },
                "managingLou": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "529900T8BM49AURSDO55"
                }
              }
            }
          },
          "total": {
            "type": "integer",
            "example": 42
          },
          "page": {
            "type": "integer",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "example": 10
          }
        },
        "example": {
          "records": [
            {
              "lei": "5967007LIEEXZXHKQU17",
              "legalName": "Equinor ASA",
              "jurisdiction": "NO",
              "registeredAs": "923609016",
              "address": {
                "lines": [
                  "Forusbeen 50"
                ],
                "city": "Stavanger",
                "country": "NO",
                "postalCode": "4035"
              },
              "entityStatus": "ACTIVE",
              "category": "GENERAL",
              "registrationStatus": "ISSUED",
              "initialRegistrationDate": "2012-11-30T00:00:00.000Z",
              "lastUpdateDate": "2025-01-15T00:00:00.000Z",
              "nextRenewalDate": "2026-01-15T00:00:00.000Z",
              "managingLou": "529900T8BM49AURSDO55"
            }
          ],
          "total": 42,
          "page": 1,
          "pageSize": 10
        }
      },
      "ConnectorOpencorporatesSearch": {
        "type": "object",
        "title": "ConnectorOpencorporatesSearch",
        "additionalProperties": false,
        "description": "Paginert selskapssøk i OpenCorporates. Hver treff er et normalisert selskap med bransjekoder og kilde-provenans.",
        "required": [
          "companies",
          "page",
          "perPage",
          "totalCount"
        ],
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "companyNumber",
                "jurisdiction",
                "name",
                "industryCodes",
                "source"
              ],
              "properties": {
                "companyNumber": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "923609016"
                },
                "jurisdiction": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "no"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "EQUINOR ASA"
                },
                "incorporationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1972-07-01"
                },
                "dissolutionDate": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "companyType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Allmennaksjeselskap"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Active"
                },
                "registeredAddress": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Forusbeen 50, 4035 Stavanger"
                },
                "industryCodes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "code",
                      "description"
                    ],
                    "properties": {
                      "code": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "06.100"
                      },
                      "description": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Utvinning av råolje"
                      }
                    }
                  }
                },
                "source": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "publisher": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "url": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "retrievedAt": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "page": {
            "type": "integer",
            "example": 1
          },
          "perPage": {
            "type": "integer",
            "example": 30
          },
          "totalCount": {
            "type": [
              "integer",
              "null"
            ],
            "example": 1
          }
        },
        "example": {
          "companies": [
            {
              "companyNumber": "923609016",
              "jurisdiction": "no",
              "name": "EQUINOR ASA",
              "incorporationDate": "1972-07-01",
              "dissolutionDate": null,
              "companyType": "Allmennaksjeselskap",
              "status": "Active",
              "registeredAddress": "Forusbeen 50, 4035 Stavanger",
              "industryCodes": [
                {
                  "code": "06.100",
                  "description": "Utvinning av råolje"
                }
              ],
              "source": {
                "publisher": "Brønnøysund Register Centre",
                "url": "https://opencorporates.com/companies/no/923609016",
                "retrievedAt": "2026-07-03T09:15:00.000Z"
              }
            }
          ],
          "page": 1,
          "perPage": 30,
          "totalCount": 1
        }
      },
      "ConnectorEurlexSearch": {
        "type": "object",
        "title": "ConnectorEurlexSearch",
        "additionalProperties": false,
        "description": "Søk i EU-rettsakter (EUR-Lex). Treff med CELEX-nummer, dokumenttype, publiseringsdato og fulltekst-URL.",
        "required": [
          "query",
          "type",
          "count",
          "results"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "GDPR"
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Ekko av `?type`-filteret (null når ikke oppgitt).",
            "example": "regulation"
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "celexNumber",
                "title",
                "titleNO",
                "docType",
                "publicationDate",
                "inForceDate",
                "eeasRelevant",
                "fullTextUrl",
                "summary",
                "source"
              ],
              "properties": {
                "celexNumber": {
                  "type": "string",
                  "example": "32016R0679"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "General Data Protection Regulation"
                },
                "titleNO": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "docType": {
                  "type": "string",
                  "enum": [
                    "Regulation",
                    "Directive",
                    "Decision",
                    "Judgment",
                    "Recommendation",
                    "Other"
                  ]
                },
                "publicationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2016-05-04"
                },
                "inForceDate": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "eeasRelevant": {
                  "type": "boolean",
                  "example": false
                },
                "fullTextUrl": {
                  "type": "string",
                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                },
                "summary": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "EUR-LEX"
                  ]
                }
              }
            }
          }
        },
        "example": {
          "query": "GDPR",
          "type": "regulation",
          "count": 1,
          "results": [
            {
              "celexNumber": "32016R0679",
              "title": "General Data Protection Regulation",
              "titleNO": null,
              "docType": "Regulation",
              "publicationDate": "2016-05-04",
              "inForceDate": null,
              "eeasRelevant": false,
              "fullTextUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679",
              "summary": null,
              "source": "EUR-LEX"
            }
          ]
        }
      },
      "ConnectorDataNorgeDatasets": {
        "type": "object",
        "title": "ConnectorDataNorgeDatasets",
        "additionalProperties": false,
        "description": "Datasett-treff fra Felles datakatalog (data.norge.no): navn, beskrivelse, organisasjon, lisens, formater og tagger.",
        "required": [
          "data",
          "total",
          "start"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "title",
                "description",
                "organization",
                "licenseId",
                "numResources",
                "formats",
                "tags",
                "modifiedAt",
                "createdAt"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "abc-123"
                },
                "name": {
                  "type": "string",
                  "example": "befolkning-2024"
                },
                "title": {
                  "type": "string",
                  "example": "Befolkning per kommune 2024"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "organization": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Statistisk sentralbyrå"
                },
                "licenseId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NLOD"
                },
                "numResources": {
                  "type": "integer",
                  "example": 3
                },
                "formats": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "CSV",
                    "JSON"
                  ]
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "befolkning",
                    "kommune"
                  ]
                },
                "modifiedAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-01-10"
                },
                "createdAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2024-02-01"
                }
              }
            }
          },
          "total": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Totalt antall treff (null ved cache-hit/stale).",
            "example": 120
          },
          "start": {
            "type": "integer",
            "description": "Offset (echo).",
            "example": 0
          }
        },
        "example": {
          "data": [
            {
              "id": "abc-123",
              "name": "befolkning-2024",
              "title": "Befolkning per kommune 2024",
              "description": "Folketall per kommune.",
              "organization": "Statistisk sentralbyrå",
              "licenseId": "NLOD",
              "numResources": 3,
              "formats": [
                "CSV",
                "JSON"
              ],
              "tags": [
                "befolkning",
                "kommune"
              ],
              "modifiedAt": "2025-01-10",
              "createdAt": "2024-02-01"
            }
          ],
          "total": 120,
          "start": 0
        }
      },
      "ConnectorEurostatDatasets": {
        "type": "object",
        "title": "ConnectorEurostatDatasets",
        "additionalProperties": false,
        "description": "Paginert utsnitt av Eurostats datasett-katalog (Table of Contents): kode, tittel, type og om datasettet er spørrbart.",
        "required": [
          "total",
          "limit",
          "offset",
          "results"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "example": 350
          },
          "limit": {
            "type": "integer",
            "example": 50
          },
          "offset": {
            "type": "integer",
            "example": 0
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "code",
                "title",
                "type",
                "queryable"
              ],
              "properties": {
                "code": {
                  "type": "string",
                  "example": "nama_10_gdp"
                },
                "title": {
                  "type": "string",
                  "example": "GDP and main components"
                },
                "type": {
                  "type": "string",
                  "example": "dataset"
                },
                "queryable": {
                  "type": "boolean",
                  "example": true
                }
              }
            }
          }
        },
        "example": {
          "total": 350,
          "limit": 50,
          "offset": 0,
          "results": [
            {
              "code": "nama_10_gdp",
              "title": "GDP and main components",
              "type": "dataset",
              "queryable": true
            }
          ]
        }
      },
      "ConnectorBrregKonkursSearch": {
        "type": "object",
        "title": "ConnectorBrregKonkursSearch",
        "additionalProperties": false,
        "description": "Paginert søk i Brregs konkursregister. Hver rad er en normalisert konkurssak med bo-referanse, åpningsdato, behandlingstype og eventuell bostyrer.",
        "required": [
          "data",
          "page"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "boRef",
                "orgnr",
                "navn",
                "aapningsDato",
                "behandlingstype",
                "status",
                "rettskrets",
                "bostyrer",
                "ansatteBerort",
                "naeringskode",
                "naeringskodeBeskrivelse",
                "stiftelsesdato",
                "sisteEndring"
              ],
              "properties": {
                "boRef": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2024-12345"
                },
                "orgnr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "912345678"
                },
                "navn": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Eksempel AS"
                },
                "aapningsDato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2024-06-01"
                },
                "behandlingstype": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Konkurs"
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Under bobehandling"
                },
                "rettskrets": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Oslo byfogdembete"
                },
                "bostyrer": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "required": [
                    "navn",
                    "advokatOrgnr"
                  ],
                  "properties": {
                    "navn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Advokat Kari Nordmann"
                    },
                    "advokatOrgnr": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "ansatteBerort": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 12
                },
                "naeringskode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "47.111"
                },
                "naeringskodeBeskrivelse": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Butikkhandel"
                },
                "stiftelsesdato": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sisteEndring": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "page": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "size",
              "totalElements",
              "totalPages",
              "number"
            ],
            "properties": {
              "size": {
                "type": "integer",
                "example": 20
              },
              "totalElements": {
                "type": "integer",
                "example": 145
              },
              "totalPages": {
                "type": "integer",
                "example": 8
              },
              "number": {
                "type": "integer",
                "example": 0
              }
            }
          }
        },
        "example": {
          "data": [
            {
              "boRef": "2024-12345",
              "orgnr": "912345678",
              "navn": "Eksempel AS",
              "aapningsDato": "2024-06-01",
              "behandlingstype": "Konkurs",
              "status": "Under bobehandling",
              "rettskrets": "Oslo byfogdembete",
              "bostyrer": {
                "navn": "Advokat Kari Nordmann",
                "advokatOrgnr": null
              },
              "ansatteBerort": 12,
              "naeringskode": "47.111",
              "naeringskodeBeskrivelse": "Butikkhandel",
              "stiftelsesdato": "2010-01-01",
              "sisteEndring": "2024-06-05"
            }
          ],
          "page": {
            "size": 20,
            "totalElements": 145,
            "totalPages": 8,
            "number": 0
          }
        }
      },
      "ConnectorSelskapSearch": {
        "type": "object",
        "title": "ConnectorSelskapSearch",
        "additionalProperties": false,
        "description": "Kanonisk selskapssøk (per default mot norsk Brreg). Paginerte treff i felles `CanonicalCompany`-form (nordisk-kompatibel), med status- og adressefelt.",
        "required": [
          "query",
          "total",
          "limit",
          "fra",
          "count",
          "results"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "equinor"
          },
          "total": {
            "type": "integer",
            "description": "Totalt antall treff upstream.",
            "example": 3
          },
          "limit": {
            "type": "integer",
            "example": 20
          },
          "fra": {
            "type": "integer",
            "description": "Offset.",
            "example": 0
          },
          "count": {
            "type": "integer",
            "description": "Antall treff i denne siden.",
            "example": 3
          },
          "degraded": {
            "type": "boolean",
            "description": "Til stede kun når fallback-kilde ble brukt."
          },
          "note": {
            "type": "string",
            "description": "Til stede kun når fallback-kilde ble brukt."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "orgnr",
                "nationalIdType",
                "country",
                "navn",
                "mvaNavn",
                "selskapsform",
                "antallAnsatte",
                "stiftetIso",
                "forretningsadresse",
                "postadresse",
                "kontakt",
                "naeringskode",
                "status",
                "konkurs",
                "underAvvikling",
                "slettetIso",
                "sistHentetIso",
                "source",
                "apiVersion"
              ],
              "properties": {
                "orgnr": {
                  "type": "string",
                  "example": "923609016"
                },
                "nationalIdType": {
                  "type": "string",
                  "enum": [
                    "ORGNR",
                    "CVR",
                    "ORGNR_SE",
                    "YTJ",
                    "KENNITALA"
                  ]
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "NO",
                    "SE",
                    "DK",
                    "FI",
                    "IS"
                  ]
                },
                "navn": {
                  "type": "string",
                  "example": "EQUINOR ASA"
                },
                "mvaNavn": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "selskapsform": {
                  "type": "string",
                  "enum": [
                    "AS",
                    "ASA",
                    "ENK",
                    "ANS",
                    "SA",
                    "IKS",
                    "KF",
                    "STI",
                    "FLI",
                    "ANNET"
                  ]
                },
                "antallAnsatte": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 22000
                },
                "stiftetIso": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1972-07-01"
                },
                "forretningsadresse": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "required": [
                    "adresse",
                    "postnummer",
                    "poststed",
                    "kommunenummer",
                    "land"
                  ],
                  "properties": {
                    "adresse": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forusbeen 50"
                      ]
                    },
                    "postnummer": {
                      "type": "string",
                      "example": "4035"
                    },
                    "poststed": {
                      "type": "string",
                      "example": "STAVANGER"
                    },
                    "kommunenummer": {
                      "type": "string",
                      "example": "1103"
                    },
                    "land": {
                      "type": "string",
                      "enum": [
                        "NO",
                        "SE",
                        "DK",
                        "FI",
                        "IS"
                      ]
                    }
                  }
                },
                "postadresse": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "required": [
                    "adresse",
                    "postnummer",
                    "poststed",
                    "kommunenummer",
                    "land"
                  ],
                  "properties": {
                    "adresse": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "postnummer": {
                      "type": "string"
                    },
                    "poststed": {
                      "type": "string"
                    },
                    "kommunenummer": {
                      "type": "string"
                    },
                    "land": {
                      "type": "string",
                      "enum": [
                        "NO",
                        "SE",
                        "DK",
                        "FI",
                        "IS"
                      ]
                    }
                  }
                },
                "kontakt": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "epost",
                    "telefon",
                    "hjemmeside"
                  ],
                  "properties": {
                    "epost": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "telefon": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "hjemmeside": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "https://www.equinor.com"
                    }
                  }
                },
                "naeringskode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "06.100"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "aktiv",
                    "konkurs",
                    "under_avvikling",
                    "slettet"
                  ]
                },
                "konkurs": {
                  "type": "boolean",
                  "example": false
                },
                "underAvvikling": {
                  "type": "boolean",
                  "example": false
                },
                "slettetIso": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sistHentetIso": {
                  "type": "string",
                  "example": "2026-07-03T09:15:00.000Z"
                },
                "source": {
                  "type": "string",
                  "example": "selskap:brreg"
                },
                "apiVersion": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          }
        },
        "example": {
          "query": "equinor",
          "total": 1,
          "limit": 20,
          "fra": 0,
          "count": 1,
          "results": [
            {
              "orgnr": "923609016",
              "nationalIdType": "ORGNR",
              "country": "NO",
              "navn": "EQUINOR ASA",
              "mvaNavn": null,
              "selskapsform": "ASA",
              "antallAnsatte": 22000,
              "stiftetIso": "1972-07-01",
              "forretningsadresse": {
                "adresse": [
                  "Forusbeen 50"
                ],
                "postnummer": "4035",
                "poststed": "STAVANGER",
                "kommunenummer": "1103",
                "land": "NO"
              },
              "postadresse": null,
              "kontakt": {
                "epost": null,
                "telefon": null,
                "hjemmeside": "https://www.equinor.com"
              },
              "naeringskode": "06.100",
              "status": "aktiv",
              "konkurs": false,
              "underAvvikling": false,
              "slettetIso": null,
              "sistHentetIso": "2026-07-03T09:15:00.000Z",
              "source": "selskap:brreg",
              "apiVersion": null
            }
          ]
        }
      },
      "ConnectorSsbKostraIndicators": {
        "type": "array",
        "title": "ConnectorSsbKostraIndicators",
        "description": "Katalog over KOSTRA-indikatorer (id, navn, kategori). Enten den statiske standard-listen eller SSB-tabeller mappet fra en `q`-spørring.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "id",
            "name",
            "category"
          ],
          "properties": {
            "id": {
              "type": "string",
              "example": "netto_driftsutgifter_grunnskole"
            },
            "name": {
              "type": "string",
              "example": "Netto driftsutgifter grunnskole per innbygger"
            },
            "category": {
              "type": "string",
              "example": "Grunnskole"
            },
            "tableId": {
              "type": "string",
              "example": "12367"
            },
            "contentsCode": {
              "type": "string",
              "example": "KOSTleveringgrunnskole"
            },
            "description": {
              "type": "string"
            },
            "unit": {
              "type": "string",
              "example": "kr"
            }
          }
        },
        "example": [
          {
            "id": "netto_driftsutgifter_grunnskole",
            "name": "Netto driftsutgifter grunnskole per innbygger",
            "category": "Grunnskole",
            "unit": "kr"
          }
        ]
      },
      "ConnectorOpenfigiSearch": {
        "type": "object",
        "title": "ConnectorOpenfigiSearch",
        "additionalProperties": false,
        "description": "Instrument-/verdipapirsøk i OpenFIGI: FIGI-identifikatorer, ticker, børs og verdipapirtype. `next` er cursor for neste side.",
        "required": [
          "source",
          "resultCount",
          "records",
          "next"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "openfigi"
            ]
          },
          "resultCount": {
            "type": "integer",
            "example": 1
          },
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "figi",
                "compositeFIGI",
                "shareClassFIGI",
                "name",
                "ticker",
                "exchCode",
                "marketSector",
                "securityType",
                "securityDescription",
                "source"
              ],
              "properties": {
                "figi": {
                  "type": "string",
                  "example": "BBG000NSV432"
                },
                "compositeFIGI": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "BBG000NSV432"
                },
                "shareClassFIGI": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "BBG001SQ4XV1"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "EQUINOR ASA"
                },
                "ticker": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "EQNR"
                },
                "exchCode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "OL"
                },
                "marketSector": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Equity"
                },
                "securityType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Common Stock"
                },
                "securityDescription": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "EQNR NO"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "openfigi"
                  ]
                }
              }
            }
          },
          "next": {
            "type": [
              "string",
              "null"
            ],
            "description": "Upstream paginerings-cursor for neste side."
          }
        },
        "example": {
          "source": "openfigi",
          "resultCount": 1,
          "records": [
            {
              "figi": "BBG000NSV432",
              "compositeFIGI": "BBG000NSV432",
              "shareClassFIGI": "BBG001SQ4XV1",
              "name": "EQUINOR ASA",
              "ticker": "EQNR",
              "exchCode": "OL",
              "marketSector": "Equity",
              "securityType": "Common Stock",
              "securityDescription": "EQNR NO",
              "source": "openfigi"
            }
          ],
          "next": null
        }
      },
      "ConnectorApisIsSearch": {
        "type": "object",
        "title": "ConnectorApisIsSearch",
        "additionalProperties": false,
        "description": "Søketreff i det islandske foretaksregisteret (apis.is): normaliserte selskaper med kennitala-id, status og VAT-numre.",
        "required": [
          "companies",
          "count",
          "query"
        ],
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "address",
                "status",
                "vatNumbers",
                "country",
                "source"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "5902697199"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Icelandair ehf."
                },
                "address": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Reykjavíkurflugvöllur, 101 Reykjavík"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "inactive",
                    "unknown"
                  ]
                },
                "vatNumbers": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "12345"
                  ]
                },
                "country": {
                  "type": "string",
                  "enum": [
                    "IS"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "apis.is"
                  ]
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "query": {
            "type": "string",
            "example": "icelandair"
          }
        },
        "example": {
          "companies": [
            {
              "id": "5902697199",
              "name": "Icelandair ehf.",
              "address": "Reykjavíkurflugvöllur, 101 Reykjavík",
              "status": "active",
              "vatNumbers": [
                "12345"
              ],
              "country": "IS",
              "source": "apis.is"
            }
          ],
          "count": 1,
          "query": "icelandair"
        }
      },
      "ConnectorArbetsformedlingenSearch": {
        "type": "object",
        "title": "ConnectorArbetsformedlingenSearch",
        "additionalProperties": false,
        "description": "Paginert stillingssøk hos Arbetsförmedlingen. Hver treff er en normalisert jobbannonse med arbeidsgiver, sted, yrke og søknadsfrist.",
        "required": [
          "jobs",
          "total",
          "positions",
          "offset",
          "limit",
          "source",
          "fetchedAt"
        ],
        "properties": {
          "jobs": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "headline",
                "employer",
                "employerOrgnr",
                "workplace",
                "municipality",
                "municipalityCode",
                "region",
                "country",
                "occupation",
                "occupationField",
                "employmentType",
                "workingHoursType",
                "duration",
                "numberOfVacancies",
                "publicationDate",
                "applicationDeadline",
                "webpageUrl",
                "description"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "12345"
                },
                "headline": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Systemutvecklare"
                },
                "employer": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Volvo AB"
                },
                "employerOrgnr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "5560360793"
                },
                "workplace": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Göteborg"
                },
                "municipality": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Göteborg"
                },
                "municipalityCode": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1480"
                },
                "region": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Västra Götaland"
                },
                "country": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Sverige"
                },
                "occupation": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Mjukvaruutvecklare"
                },
                "occupationField": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Data/IT"
                },
                "employmentType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Tillsvidare"
                },
                "workingHoursType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Heltid"
                },
                "duration": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Tills vidare"
                },
                "numberOfVacancies": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 2
                },
                "publicationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-04-01"
                },
                "applicationDeadline": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-05-01"
                },
                "webpageUrl": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://arbetsformedlingen.se/annons/12345"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "total": {
            "type": "integer",
            "example": 42
          },
          "positions": {
            "type": "integer",
            "description": "Totalt antall ledige stillinger på tvers av treff.",
            "example": 55
          },
          "offset": {
            "type": "integer",
            "example": 0
          },
          "limit": {
            "type": "integer",
            "example": 20
          },
          "source": {
            "type": "string",
            "enum": [
              "arbetsformedlingen"
            ]
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "jobs": [
            {
              "id": "12345",
              "headline": "Systemutvecklare",
              "employer": "Volvo AB",
              "employerOrgnr": "5560360793",
              "workplace": "Göteborg",
              "municipality": "Göteborg",
              "municipalityCode": "1480",
              "region": "Västra Götaland",
              "country": "Sverige",
              "occupation": "Mjukvaruutvecklare",
              "occupationField": "Data/IT",
              "employmentType": "Tillsvidare",
              "workingHoursType": "Heltid",
              "duration": "Tills vidare",
              "numberOfVacancies": 2,
              "publicationDate": "2025-04-01",
              "applicationDeadline": "2025-05-01",
              "webpageUrl": "https://arbetsformedlingen.se/annons/12345",
              "description": "Vi söker en systemutvecklare."
            }
          ],
          "total": 42,
          "positions": 55,
          "offset": 0,
          "limit": 20,
          "source": "arbetsformedlingen",
          "fetchedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorCkanDatasetSearch": {
        "type": "object",
        "title": "ConnectorCkanDatasetSearch",
        "additionalProperties": false,
        "description": "Paginert datasett-søkeside fra et CKAN-basert åpen-data-register. Hvert datasett har organisasjon, lisens, tagger og ressurser (distribusjoner).",
        "required": [
          "datasets",
          "count",
          "rows",
          "start"
        ],
        "properties": {
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "title",
                "description",
                "organization",
                "license",
                "modified",
                "created",
                "tags",
                "resources"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "abc-123"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "vaerdata-2024"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Værdata 2024"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "organization": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Ilmatieteen laitos"
                },
                "license": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "CC-BY-4.0"
                },
                "modified": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-01-10"
                },
                "created": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2024-02-01"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "vær",
                    "klima"
                  ]
                },
                "resources": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "format",
                      "url"
                    ],
                    "properties": {
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "CSV-fil"
                      },
                      "format": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "CSV"
                      },
                      "url": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "https://example.org/data.csv"
                      }
                    }
                  }
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "description": "Totalt antall treff upstream.",
            "example": 120
          },
          "rows": {
            "type": "integer",
            "description": "Sidestørrelse (limit).",
            "example": 20
          },
          "start": {
            "type": "integer",
            "description": "Offset.",
            "example": 0
          }
        },
        "example": {
          "datasets": [
            {
              "id": "abc-123",
              "name": "vaerdata-2024",
              "title": "Værdata 2024",
              "description": "Observasjoner per stasjon.",
              "organization": "Ilmatieteen laitos",
              "license": "CC-BY-4.0",
              "modified": "2025-01-10",
              "created": "2024-02-01",
              "tags": [
                "vær",
                "klima"
              ],
              "resources": [
                {
                  "name": "CSV-fil",
                  "format": "CSV",
                  "url": "https://example.org/data.csv"
                }
              ]
            }
          ],
          "count": 120,
          "rows": 20,
          "start": 0
        }
      },
      "ConnectorDataEuropaEuSearch": {
        "type": "object",
        "title": "ConnectorDataEuropaEuSearch",
        "additionalProperties": false,
        "description": "Paginert datasett-søk på EUs åpen-data-portal (data.europa.eu): tittel, utgiver, land, temaer, lisens og ressurser.",
        "required": [
          "datasets",
          "count",
          "limit",
          "page"
        ],
        "properties": {
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "title",
                "description",
                "publisher",
                "country",
                "themes",
                "license",
                "modified",
                "issued",
                "resources"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "eu-ds-42"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "European air quality"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "publisher": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "European Environment Agency"
                },
                "country": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "EU"
                },
                "themes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "ENVI"
                  ]
                },
                "license": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "CC-BY-4.0"
                },
                "modified": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-03-01"
                },
                "issued": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2020-01-01"
                },
                "resources": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "title",
                      "format",
                      "url"
                    ],
                    "properties": {
                      "title": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "Download CSV"
                      },
                      "format": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "CSV"
                      },
                      "url": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "https://example.eu/aq.csv"
                      }
                    }
                  }
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "example": 350
          },
          "limit": {
            "type": "integer",
            "example": 10
          },
          "page": {
            "type": "integer",
            "example": 0
          }
        },
        "example": {
          "datasets": [
            {
              "id": "eu-ds-42",
              "title": "European air quality",
              "description": "Hourly AQ measurements.",
              "publisher": "European Environment Agency",
              "country": "EU",
              "themes": [
                "ENVI"
              ],
              "license": "CC-BY-4.0",
              "modified": "2025-03-01",
              "issued": "2020-01-01",
              "resources": [
                {
                  "title": "Download CSV",
                  "format": "CSV",
                  "url": "https://example.eu/aq.csv"
                }
              ]
            }
          ],
          "count": 350,
          "limit": 10,
          "page": 0
        }
      },
      "ConnectorEinnsynSearch": {
        "type": "object",
        "title": "ConnectorEinnsynSearch",
        "additionalProperties": false,
        "description": "Søketreff i eInnsyn (statens/kommuners offentlige postjournal): journalposter med tittel, datoer, saksnummer og publiserende virksomhet.",
        "required": [
          "hits",
          "totalHits",
          "page",
          "pageSize",
          "nextCursor"
        ],
        "properties": {
          "hits": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "entity",
                "tittel",
                "offentligTittel",
                "journaldato",
                "dokumentdato",
                "saksnummer",
                "journalpostnummer",
                "publisher",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "jp_123"
                },
                "entity": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Entitetstype utledet fra id-prefiks (f.eks. Journalpost/Saksmappe/Møtemappe).",
                  "example": "Journalpost"
                },
                "tittel": {
                  "type": "string",
                  "example": "Søknad om tilskudd"
                },
                "offentligTittel": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "journaldato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-03-01"
                },
                "dokumentdato": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-02-28"
                },
                "saksnummer": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025/123"
                },
                "journalpostnummer": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "4"
                },
                "publisher": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "navn",
                    "orgnummer"
                  ],
                  "properties": {
                    "navn": {
                      "type": "string",
                      "example": "Oslo kommune"
                    },
                    "orgnummer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "958935420"
                    },
                    "id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "publisherLink": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://einnsyn.no/journalpost/jp_123"
                }
              }
            }
          },
          "totalHits": {
            "type": "integer",
            "example": 240
          },
          "page": {
            "type": "integer",
            "example": 0
          },
          "pageSize": {
            "type": "integer",
            "example": 20
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "example": "eyJvZmZzZXQiOjIwfQ=="
          }
        },
        "example": {
          "hits": [
            {
              "id": "jp_123",
              "entity": "Journalpost",
              "tittel": "Søknad om tilskudd",
              "offentligTittel": "Søknad om tilskudd",
              "journaldato": "2025-03-01",
              "dokumentdato": "2025-02-28",
              "saksnummer": "2025/123",
              "journalpostnummer": "4",
              "publisher": {
                "navn": "Oslo kommune",
                "orgnummer": "958935420",
                "id": null,
                "publisherLink": null
              },
              "url": "https://einnsyn.no/journalpost/jp_123"
            }
          ],
          "totalHits": 240,
          "page": 0,
          "pageSize": 20,
          "nextCursor": "eyJvZmZzZXQiOjIwfQ=="
        }
      },
      "ConnectorEpoOpsSearch": {
        "type": "object",
        "title": "ConnectorEpoOpsSearch",
        "additionalProperties": false,
        "description": "Patentsøk i EPO OPS. Treff med publikasjonsnummer, familie-id og publiseringsdato.",
        "required": [
          "query",
          "total",
          "count",
          "limit",
          "patents"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "carbon capture"
          },
          "total": {
            "type": "integer",
            "description": "Totalt antall treff upstream.",
            "example": 1200
          },
          "count": {
            "type": "integer",
            "description": "Antall treff i denne siden.",
            "example": 25
          },
          "limit": {
            "type": "integer",
            "example": 25
          },
          "patents": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "patentNumber",
                "familyId",
                "publicationDate"
              ],
              "properties": {
                "patentNumber": {
                  "type": "string",
                  "example": "EP1234567A1"
                },
                "familyId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "12345678"
                },
                "publicationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2020-06-01"
                }
              }
            }
          }
        },
        "example": {
          "query": "carbon capture",
          "total": 1200,
          "count": 1,
          "limit": 25,
          "patents": [
            {
              "patentNumber": "EP1234567A1",
              "familyId": "12345678",
              "publicationDate": "2020-06-01"
            }
          ]
        }
      },
      "ConnectorEurlexCelexSearch": {
        "type": "object",
        "title": "ConnectorEurlexCelexSearch",
        "additionalProperties": false,
        "description": "Søk i EUR-Lex på CELEX-nummer. Treff med CELEX-id, tittel, publiseringsdato og kanonisk URL.",
        "required": [
          "query",
          "count",
          "results"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "32016R0679"
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "celex",
                "title",
                "publicationDate",
                "canonicalUrl"
              ],
              "properties": {
                "celex": {
                  "type": "string",
                  "example": "32016R0679"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "General Data Protection Regulation"
                },
                "publicationDate": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2016-05-04"
                },
                "canonicalUrl": {
                  "type": "string",
                  "example": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
                }
              }
            }
          }
        },
        "example": {
          "query": "32016R0679",
          "count": 1,
          "results": [
            {
              "celex": "32016R0679",
              "title": "General Data Protection Regulation",
              "publicationDate": "2016-05-04",
              "canonicalUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
            }
          ]
        }
      },
      "ConnectorStatsregnskapSearch": {
        "type": "object",
        "title": "ConnectorStatsregnskapSearch",
        "additionalProperties": false,
        "description": "Søk i det norske statsregnskapet: aggregat per post-type + rader med kapittel/ post/artskonto/virksomhet og beløp for ett år.",
        "required": [
          "source",
          "year",
          "query",
          "totalMatched",
          "sumBelop",
          "truncated",
          "byPostType",
          "rows",
          "fetchedAt"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "statsregnskap"
            ]
          },
          "year": {
            "type": "integer",
            "example": 2024
          },
          "query": {
            "type": "object",
            "additionalProperties": false,
            "description": "Ekko av oppgitte filter (felt utelates når de ikke ble oppgitt).",
            "properties": {
              "virksomhet": {
                "type": "string"
              },
              "konto": {
                "type": "string"
              },
              "artskonto": {
                "type": "string"
              },
              "departement": {
                "type": "string"
              }
            }
          },
          "totalMatched": {
            "type": "integer",
            "example": 320
          },
          "sumBelop": {
            "type": "number",
            "description": "Sum beløp for treffene (NOK).",
            "example": 4500000000
          },
          "truncated": {
            "type": "boolean",
            "example": false
          },
          "byPostType": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "postType",
                "sumBelop",
                "rowCount"
              ],
              "properties": {
                "postType": {
                  "type": "string",
                  "example": "Driftsutgifter"
                },
                "sumBelop": {
                  "type": "number",
                  "example": 3200000000
                },
                "rowCount": {
                  "type": "integer",
                  "example": 210
                }
              }
            }
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "aar",
                "periode",
                "kontoNr",
                "konto",
                "fagdepartementId",
                "fagdepartement",
                "kapittelId",
                "kapittel",
                "postId",
                "post",
                "postType",
                "artskontoId",
                "artskonto",
                "virksomhetId",
                "virksomhet",
                "belop"
              ],
              "properties": {
                "aar": {
                  "type": "string",
                  "example": "2024"
                },
                "periode": {
                  "type": "string",
                  "example": "12"
                },
                "kontoNr": {
                  "type": "string",
                  "example": "0001"
                },
                "konto": {
                  "type": "string",
                  "example": "Driftsutgifter"
                },
                "fagdepartementId": {
                  "type": "string",
                  "example": "FIN"
                },
                "fagdepartement": {
                  "type": "string",
                  "example": "Finansdepartementet"
                },
                "kapittelId": {
                  "type": "string",
                  "example": "1600"
                },
                "kapittel": {
                  "type": "string",
                  "example": "Finansdepartementet"
                },
                "postId": {
                  "type": "string",
                  "example": "01"
                },
                "post": {
                  "type": "string",
                  "example": "Driftsutgifter"
                },
                "postType": {
                  "type": "string",
                  "example": "Driftsutgifter"
                },
                "artskontoId": {
                  "type": "string",
                  "example": "11"
                },
                "artskonto": {
                  "type": "string",
                  "example": "Lønn"
                },
                "virksomhetId": {
                  "type": "string",
                  "example": "12345"
                },
                "virksomhet": {
                  "type": "string",
                  "example": "Skatteetaten"
                },
                "belop": {
                  "type": "number",
                  "example": 1200000
                }
              }
            }
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "source": "statsregnskap",
          "year": 2024,
          "query": {
            "departement": "FIN"
          },
          "totalMatched": 1,
          "sumBelop": 1200000,
          "truncated": false,
          "byPostType": [
            {
              "postType": "Driftsutgifter",
              "sumBelop": 1200000,
              "rowCount": 1
            }
          ],
          "rows": [
            {
              "aar": "2024",
              "periode": "12",
              "kontoNr": "0001",
              "konto": "Driftsutgifter",
              "fagdepartementId": "FIN",
              "fagdepartement": "Finansdepartementet",
              "kapittelId": "1600",
              "kapittel": "Finansdepartementet",
              "postId": "01",
              "post": "Driftsutgifter",
              "postType": "Driftsutgifter",
              "artskontoId": "11",
              "artskonto": "Lønn",
              "virksomhetId": "12345",
              "virksomhet": "Skatteetaten",
              "belop": 1200000
            }
          ],
          "fetchedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorNbDhlabSearch": {
        "type": "object",
        "title": "ConnectorNbDhlabSearch",
        "additionalProperties": false,
        "description": "Katalogsøk i Nasjonalbibliotekets DH-lab: verk med tittel, opphavspersoner, språk, medietype og lenker.",
        "required": [
          "source",
          "query",
          "page",
          "size",
          "totalElements",
          "totalPages",
          "count",
          "items"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "nb-dhlab"
            ]
          },
          "query": {
            "type": "string",
            "example": "ibsen"
          },
          "page": {
            "type": "integer",
            "example": 0
          },
          "size": {
            "type": "integer",
            "example": 20
          },
          "totalElements": {
            "type": "integer",
            "example": 340
          },
          "totalPages": {
            "type": "integer",
            "example": 17
          },
          "count": {
            "type": "integer",
            "example": 20
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "source",
                "upstreamId",
                "title",
                "creators",
                "languages",
                "mediaTypes",
                "issued",
                "selfUrl",
                "presentationUrl"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "nb-dhlab:URN:NBN:no-nb_digibok_123"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "nb-dhlab"
                  ]
                },
                "upstreamId": {
                  "type": "string",
                  "example": "URN:NBN:no-nb_digibok_123"
                },
                "title": {
                  "type": "string",
                  "example": "Et dukkehjem"
                },
                "creators": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "Ibsen, Henrik"
                  ]
                },
                "languages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "nob"
                  ]
                },
                "mediaTypes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "Bok"
                  ]
                },
                "issued": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "1879"
                },
                "selfUrl": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://api.nb.no/catalog/v1/items/123"
                },
                "presentationUrl": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://www.nb.no/items/123"
                }
              }
            }
          }
        },
        "example": {
          "source": "nb-dhlab",
          "query": "ibsen",
          "page": 0,
          "size": 20,
          "totalElements": 340,
          "totalPages": 17,
          "count": 1,
          "items": [
            {
              "id": "nb-dhlab:URN:NBN:no-nb_digibok_123",
              "source": "nb-dhlab",
              "upstreamId": "URN:NBN:no-nb_digibok_123",
              "title": "Et dukkehjem",
              "creators": [
                "Ibsen, Henrik"
              ],
              "languages": [
                "nob"
              ],
              "mediaTypes": [
                "Bok"
              ],
              "issued": "1879",
              "selfUrl": "https://api.nb.no/catalog/v1/items/123",
              "presentationUrl": "https://www.nb.no/items/123"
            }
          ]
        }
      },
      "ConnectorEurostatSearch": {
        "type": "object",
        "title": "ConnectorEurostatSearch",
        "additionalProperties": false,
        "description": "Fritekstsøk i Eurostats datasett-katalog. Treff med kode, tittel, type og om datasettet er spørrbart.",
        "required": [
          "query",
          "results"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "gdp"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "code",
                "title",
                "type",
                "queryable"
              ],
              "properties": {
                "code": {
                  "type": "string",
                  "example": "nama_10_gdp"
                },
                "title": {
                  "type": "string",
                  "example": "GDP and main components"
                },
                "type": {
                  "type": "string",
                  "example": "dataset"
                },
                "queryable": {
                  "type": "boolean",
                  "example": true
                }
              }
            }
          }
        },
        "example": {
          "query": "gdp",
          "results": [
            {
              "code": "nama_10_gdp",
              "title": "GDP and main components",
              "type": "dataset",
              "queryable": true
            }
          ]
        }
      },
      "ConnectorFinanstilsynetDatasets": {
        "type": "object",
        "title": "ConnectorFinanstilsynetDatasets",
        "additionalProperties": false,
        "description": "Katalog over Finanstilsynets datasett med tilgangsmetode (REST/CKAN/browser/PDF) og eventuelt KETL-endepunkt. Statisk discovery-liste, valgfritt kategori-filtrert.",
        "required": [
          "source",
          "datasets",
          "total",
          "fetchedAt"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "finanstilsynet"
            ]
          },
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "navn",
                "category",
                "description",
                "url",
                "access",
                "lastVerified"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "konsesjonsregister"
                },
                "navn": {
                  "type": "string",
                  "example": "Konsesjonsregisteret"
                },
                "category": {
                  "type": "string",
                  "enum": [
                    "konsesjon",
                    "revisor",
                    "dokumenter",
                    "tilsynssaker",
                    "statistikk"
                  ]
                },
                "description": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "example": "https://www.finanstilsynet.no/konsesjonsregister"
                },
                "access": {
                  "type": "string",
                  "enum": [
                    "rest_open",
                    "ckan_data_norge",
                    "browser_only",
                    "pdf_bulk"
                  ]
                },
                "ketlEndpoint": {
                  "type": "string",
                  "example": "/api/connectors/finanstilsynet/konsesjon/{orgnr}"
                },
                "lastVerified": {
                  "type": "string",
                  "example": "2026-06-01"
                }
              }
            }
          },
          "filter": {
            "type": "object",
            "additionalProperties": false,
            "description": "Til stede kun når et kategori-filter er anvendt.",
            "properties": {
              "category": {
                "type": "string"
              }
            }
          },
          "total": {
            "type": "integer",
            "example": 5
          },
          "fetchedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-07-03T09:15:00.000Z"
          }
        },
        "example": {
          "source": "finanstilsynet",
          "datasets": [
            {
              "id": "konsesjonsregister",
              "navn": "Konsesjonsregisteret",
              "category": "konsesjon",
              "description": "Registrerte konsesjoner.",
              "url": "https://www.finanstilsynet.no/konsesjonsregister",
              "access": "rest_open",
              "ketlEndpoint": "/api/connectors/finanstilsynet/konsesjon/{orgnr}",
              "lastVerified": "2026-06-01"
            }
          ],
          "total": 1,
          "fetchedAt": "2026-07-03T09:15:00.000Z"
        }
      },
      "ConnectorForsakringskassanDatasets": {
        "type": "object",
        "title": "ConnectorForsakringskassanDatasets",
        "additionalProperties": false,
        "description": "Liste over Försäkringskassans (Sverige) tilgjengelige datasett med oppdateringsfrekvens. `stale:true` signaliserer et cache-fallback-svar.",
        "required": [
          "source",
          "rows"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "forsakringskassan"
            ]
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "description",
                "updateFrequency"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "sjukpenning"
                },
                "name": {
                  "type": "string",
                  "example": "Sjukpenning"
                },
                "description": {
                  "type": "string"
                },
                "updateFrequency": {
                  "type": "string",
                  "example": "Månedlig"
                },
                "lastUpdated": {
                  "type": "string",
                  "example": "2025-06-01"
                }
              }
            }
          },
          "stale": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Til stede og `true` kun ved stale-cache-fallback."
          }
        },
        "example": {
          "source": "forsakringskassan",
          "rows": [
            {
              "id": "sjukpenning",
              "name": "Sjukpenning",
              "description": "Utbetald sjukpenning per månad.",
              "updateFrequency": "Månedlig",
              "lastUpdated": "2025-06-01"
            }
          ]
        }
      },
      "ConnectorFriNettleieSearch": {
        "type": "object",
        "title": "ConnectorFriNettleieSearch",
        "additionalProperties": false,
        "description": "Søk etter norske nettleie-operatører (nettselskaper). Treff med operatør-id, navn og organisasjonsnummer.",
        "required": [
          "query",
          "operators"
        ],
        "properties": {
          "query": {
            "type": "string",
            "example": "elvia"
          },
          "operators": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "operatorId",
                "name",
                "orgnr"
              ],
              "properties": {
                "operatorId": {
                  "type": "string",
                  "example": "elvia"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Elvia AS"
                },
                "orgnr": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "980489698"
                }
              }
            }
          }
        },
        "example": {
          "query": "elvia",
          "operators": [
            {
              "operatorId": "elvia",
              "name": "Elvia AS",
              "orgnr": "980489698"
            }
          ]
        }
      },
      "ConnectorImfDatasets": {
        "type": "object",
        "title": "ConnectorImfDatasets",
        "additionalProperties": false,
        "description": "Liste over tilgjengelige IMF-datasett (dataflows). Id + navn per datasett.",
        "required": [
          "source",
          "count",
          "datasets"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "imf"
            ]
          },
          "count": {
            "type": "integer",
            "example": 42
          },
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "IFS"
                },
                "name": {
                  "type": "string",
                  "example": "International Financial Statistics"
                }
              }
            }
          }
        },
        "example": {
          "source": "imf",
          "count": 1,
          "datasets": [
            {
              "id": "IFS",
              "name": "International Financial Statistics"
            }
          ]
        }
      },
      "ConnectorLantmaterietStacSearch": {
        "type": "object",
        "title": "ConnectorLantmaterietStacSearch",
        "additionalProperties": false,
        "description": "STAC-søkeresultat fra Lantmäteriet: `data` er den rå STAC-nyttelasten (FeatureCollection/collections/items), øvrige felt er KETL-envelope.",
        "required": [
          "source",
          "kind",
          "query",
          "resultCount",
          "data"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "lantmateriet-stac"
            ]
          },
          "kind": {
            "type": "string",
            "enum": [
              "search"
            ]
          },
          "query": {
            "type": "string",
            "description": "bbox / collections / «*».",
            "example": "hojd-grid"
          },
          "resultCount": {
            "type": "integer",
            "example": 10
          },
          "data": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Rå STAC-nyttelast (FeatureCollection eller lignende), videresendt verbatim. Null når upstream ikke returnerte noe. Ikke normalisert av KETL."
          }
        },
        "example": {
          "source": "lantmateriet-stac",
          "kind": "search",
          "query": "hojd-grid",
          "resultCount": 1,
          "data": {
            "type": "FeatureCollection",
            "features": []
          }
        }
      },
      "ConnectorLatviaDatagovSearch": {
        "type": "object",
        "title": "ConnectorLatviaDatagovSearch",
        "additionalProperties": false,
        "description": "Paginert datasett-søk på data.gov.lv (CKAN). Ressurser inkluderer datastore-aktiv-flagg for spørrbare tabeller.",
        "required": [
          "datasets",
          "count",
          "rows",
          "start"
        ],
        "properties": {
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "title",
                "description",
                "organization",
                "license",
                "modified",
                "created",
                "tags",
                "resources"
              ],
              "properties": {
                "id": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "abc-123"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "iedzivotaji"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Iedzīvotāji pēc pašvaldības"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "organization": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Centrālā statistikas pārvalde"
                },
                "license": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "CC-BY-4.0"
                },
                "modified": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-01-10"
                },
                "created": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2024-02-01"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "iedzivotaji"
                  ]
                },
                "resources": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "name",
                      "format",
                      "url",
                      "datastoreActive"
                    ],
                    "properties": {
                      "id": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "res-1"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "CSV"
                      },
                      "format": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "CSV"
                      },
                      "url": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "example": "https://data.gov.lv/dati.csv"
                      },
                      "datastoreActive": {
                        "type": "boolean",
                        "example": true
                      }
                    }
                  }
                }
              }
            }
          },
          "count": {
            "type": "integer",
            "example": 120
          },
          "rows": {
            "type": "integer",
            "example": 20
          },
          "start": {
            "type": "integer",
            "example": 0
          }
        },
        "example": {
          "datasets": [
            {
              "id": "abc-123",
              "name": "iedzivotaji",
              "title": "Iedzīvotāji pēc pašvaldības",
              "description": "Folketall per kommune.",
              "organization": "Centrālā statistikas pārvalde",
              "license": "CC-BY-4.0",
              "modified": "2025-01-10",
              "created": "2024-02-01",
              "tags": [
                "iedzivotaji"
              ],
              "resources": [
                {
                  "id": "res-1",
                  "name": "CSV",
                  "format": "CSV",
                  "url": "https://data.gov.lv/dati.csv",
                  "datastoreActive": true
                }
              ]
            }
          ],
          "count": 120,
          "rows": 20,
          "start": 0
        }
      },
      "ConnectorWikidataSearch": {
        "type": "object",
        "title": "ConnectorWikidataSearch",
        "additionalProperties": false,
        "description": "Entitetssøk i Wikidata. Treff med Q-id, etikett, beskrivelse, aliaser og URL.",
        "required": [
          "source",
          "query",
          "lang",
          "count",
          "hits"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "wikidata"
            ]
          },
          "query": {
            "type": "string",
            "example": "Equinor"
          },
          "lang": {
            "type": "string",
            "example": "no"
          },
          "count": {
            "type": "integer",
            "example": 1
          },
          "hits": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "label",
                "description",
                "aliases",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "Q1123669"
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Equinor"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "norsk energiselskap"
                },
                "aliases": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "Statoil"
                  ]
                },
                "url": {
                  "type": "string",
                  "example": "https://www.wikidata.org/wiki/Q1123669"
                }
              }
            }
          }
        },
        "example": {
          "source": "wikidata",
          "query": "Equinor",
          "lang": "no",
          "count": 1,
          "hits": [
            {
              "id": "Q1123669",
              "label": "Equinor",
              "description": "norsk energiselskap",
              "aliases": [
                "Statoil"
              ],
              "url": "https://www.wikidata.org/wiki/Q1123669"
            }
          ]
        }
      },
      "ConnectorYtjSearch": {
        "type": "object",
        "title": "ConnectorYtjSearch",
        "additionalProperties": false,
        "description": "Søketreff i det finske foretaksregisteret (PRH/YTJ åpne data). Selskaper med business-id, navn, selskapsformer, hovednæring og registeroppføringer. Struktur følger PRH sitt skjema (validert, men ikke re-mappet til KETL-feltnavn).",
        "required": [
          "companies",
          "source"
        ],
        "properties": {
          "totalResults": {
            "type": "integer",
            "minimum": 0,
            "example": 1
          },
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "businessId",
                "names",
                "companyForms",
                "registeredEntries"
              ],
              "properties": {
                "businessId": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "value"
                  ],
                  "properties": {
                    "value": {
                      "type": "string",
                      "example": "0112038-9"
                    },
                    "registrationDate": {
                      "type": "string",
                      "example": "1896-05-04"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "source": {
                      "type": [
                        "string",
                        "number"
                      ]
                    }
                  }
                },
                "names": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "Nokia Oyj"
                      },
                      "type": {
                        "type": [
                          "string",
                          "number"
                        ]
                      },
                      "registrationDate": {
                        "type": "string"
                      },
                      "endDate": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "source": {
                        "type": [
                          "string",
                          "number"
                        ]
                      },
                      "version": {
                        "type": [
                          "string",
                          "number"
                        ]
                      }
                    }
                  }
                },
                "companyForms": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "type": [
                          "string",
                          "number"
                        ]
                      },
                      "descriptions": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "languageCode": {
                              "type": "string",
                              "example": "fi"
                            },
                            "description": {
                              "type": "string",
                              "example": "Julkinen osakeyhtiö"
                            }
                          }
                        }
                      },
                      "registrationDate": {
                        "type": "string"
                      },
                      "endDate": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "source": {
                        "type": [
                          "string",
                          "number"
                        ]
                      }
                    }
                  }
                },
                "mainBusinessLine": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "descriptions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "languageCode": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "registrationDate": {
                      "type": "string"
                    }
                  }
                },
                "registeredEntries": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "type": [
                          "string",
                          "number"
                        ]
                      },
                      "descriptions": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "languageCode": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            }
                          }
                        }
                      },
                      "status": {
                        "type": [
                          "string",
                          "number"
                        ]
                      },
                      "registrationDate": {
                        "type": "string"
                      },
                      "endDate": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "authority": {
                        "type": [
                          "string",
                          "number"
                        ]
                      },
                      "register": {
                        "type": [
                          "string",
                          "number"
                        ]
                      }
                    }
                  }
                },
                "lastModified": {
                  "type": "string",
                  "example": "2025-05-01"
                }
              }
            }
          },
          "previousPage": {
            "type": [
              "string",
              "null"
            ]
          },
          "nextPage": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "ytj"
            ]
          }
        },
        "example": {
          "totalResults": 1,
          "companies": [
            {
              "businessId": {
                "value": "0112038-9",
                "registrationDate": "1896-05-04",
                "endDate": null
              },
              "names": [
                {
                  "name": "Nokia Oyj",
                  "type": "1"
                }
              ],
              "companyForms": [
                {
                  "type": "OYJ",
                  "descriptions": [
                    {
                      "languageCode": "fi",
                      "description": "Julkinen osakeyhtiö"
                    }
                  ],
                  "registrationDate": "1994-01-01"
                }
              ],
              "mainBusinessLine": {
                "type": "2630",
                "descriptions": [
                  {
                    "languageCode": "en",
                    "description": "Manufacture of communication equipment"
                  }
                ],
                "registrationDate": "2007-01-01"
              },
              "registeredEntries": [
                {
                  "type": "1",
                  "status": "2",
                  "register": "1",
                  "authority": "2",
                  "registrationDate": "1896-05-04"
                }
              ],
              "lastModified": "2025-05-01"
            }
          ],
          "previousPage": null,
          "nextPage": null,
          "source": "ytj"
        }
      },
      "ConnectorCkanOrganisations": {
        "type": "object",
        "title": "ConnectorCkanOrganisations",
        "additionalProperties": false,
        "description": "Liste over organisasjons-slugs/navn i et CKAN-register (fra `organization_list`).",
        "required": [
          "organisations"
        ],
        "properties": {
          "organisations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "ilmatieteen-laitos",
              "tilastokeskus"
            ]
          }
        },
        "example": {
          "organisations": [
            "ilmatieteen-laitos",
            "tilastokeskus"
          ]
        }
      },
      "ConnectorCkanDataset": {
        "type": "object",
        "title": "ConnectorCkanDataset",
        "additionalProperties": false,
        "description": "Ett normalisert datasett fra et CKAN-register: metadata, tagger og ressurser (distribusjoner).",
        "required": [
          "id",
          "name",
          "title",
          "description",
          "organization",
          "license",
          "modified",
          "created",
          "tags",
          "resources"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "example": "abc-123"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "example": "upphandlingar-2024"
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "example": "Upphandlingar 2024"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "example": "Upphandlingsmyndigheten"
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "example": "CC0-1.0"
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "example": "2025-01-10"
          },
          "created": {
            "type": [
              "string",
              "null"
            ],
            "example": "2024-02-01"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "upphandling"
            ]
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "format",
                "url"
              ],
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "CSV"
                },
                "format": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "CSV"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://example.se/data.csv"
                }
              }
            }
          }
        },
        "example": {
          "id": "abc-123",
          "name": "upphandlingar-2024",
          "title": "Upphandlingar 2024",
          "description": "Offentliga upphandlingar.",
          "organization": "Upphandlingsmyndigheten",
          "license": "CC0-1.0",
          "modified": "2025-01-10",
          "created": "2024-02-01",
          "tags": [
            "upphandling"
          ],
          "resources": [
            {
              "name": "CSV",
              "format": "CSV",
              "url": "https://example.se/data.csv"
            }
          ]
        }
      },
      "ConnectorSodirCompanies": {
        "type": "array",
        "title": "ConnectorSodirCompanies",
        "description": "Liste over selskaper registrert på norsk sokkel (SODIR), med NPD-id og navn.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "npdId",
            "name"
          ],
          "properties": {
            "npdId": {
              "type": [
                "integer",
                "null"
              ],
              "example": 43765
            },
            "name": {
              "type": "string",
              "example": "EQUINOR ENERGY AS"
            }
          }
        },
        "example": [
          {
            "npdId": 43765,
            "name": "EQUINOR ENERGY AS"
          },
          {
            "npdId": 12345,
            "name": "AKER BP ASA"
          }
        ]
      },
      "ConnectorFinansinspektionenSeInstitutions": {
        "type": "array",
        "title": "ConnectorFinansinspektionenSeInstitutions",
        "description": "Liste over foretak under Finansinspektionens tilsyn (Sverige): type, kategori, tillatelse og status.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "id",
            "name",
            "orgnr",
            "type",
            "category",
            "licenseType",
            "status",
            "tillstandsdatum",
            "registrationDate",
            "avregistreringsdatum",
            "country",
            "address",
            "postalCode",
            "city",
            "website",
            "source"
          ],
          "properties": {
            "id": {
              "type": "string",
              "example": "502017-7691"
            },
            "name": {
              "type": [
                "string",
                "null"
              ],
              "example": "Klarna Bank AB"
            },
            "orgnr": {
              "type": [
                "string",
                "null"
              ],
              "example": "556737-0431"
            },
            "type": {
              "type": [
                "string",
                "null"
              ],
              "description": "Normalisert type der kjent (kreditinstitut/vardepappersbolag/ forsakringsbolag/fondbolag/betaltjanstleverantor/inlaningsforetag/ crowdfunding), ellers rå upstream-streng.",
              "example": "kreditinstitut"
            },
            "category": {
              "type": [
                "string",
                "null"
              ]
            },
            "licenseType": {
              "type": [
                "string",
                "null"
              ]
            },
            "status": {
              "type": [
                "string",
                "null"
              ],
              "description": "«aktiv»/«avregistrerad» der kjent, ellers rå streng.",
              "example": "aktiv"
            },
            "tillstandsdatum": {
              "type": [
                "string",
                "null"
              ],
              "example": "2017-06-19"
            },
            "registrationDate": {
              "type": [
                "string",
                "null"
              ]
            },
            "avregistreringsdatum": {
              "type": [
                "string",
                "null"
              ]
            },
            "country": {
              "type": [
                "string",
                "null"
              ],
              "example": "SE"
            },
            "address": {
              "type": [
                "string",
                "null"
              ]
            },
            "postalCode": {
              "type": [
                "string",
                "null"
              ],
              "example": "11134"
            },
            "city": {
              "type": [
                "string",
                "null"
              ],
              "example": "Stockholm"
            },
            "website": {
              "type": [
                "string",
                "null"
              ],
              "example": "https://www.klarna.com"
            },
            "source": {
              "type": "string",
              "enum": [
                "finansinspektionen-se"
              ]
            }
          }
        },
        "example": [
          {
            "id": "502017-7691",
            "name": "Klarna Bank AB",
            "orgnr": "556737-0431",
            "type": "kreditinstitut",
            "category": "Bank",
            "licenseType": "Bankoktroj",
            "status": "aktiv",
            "tillstandsdatum": "2017-06-19",
            "registrationDate": null,
            "avregistreringsdatum": null,
            "country": "SE",
            "address": "Sveavägen 46",
            "postalCode": "11134",
            "city": "Stockholm",
            "website": "https://www.klarna.com",
            "source": "finansinspektionen-se"
          }
        ]
      },
      "ConnectorSiktCristinInstitutions": {
        "type": "object",
        "title": "ConnectorSiktCristinInstitutions",
        "additionalProperties": false,
        "description": "Paginert liste over forskningsinstitusjoner i Cristin: navn, akronym, land og URL.",
        "required": [
          "items",
          "total",
          "page",
          "perPage"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "acronym",
                "country",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "185"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Universitetet i Oslo"
                },
                "acronym": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "UiO"
                },
                "country": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NO"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "https://api.cristin.no/v2/institutions/185"
                }
              }
            }
          },
          "total": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Fra upstream `X-Total-Count`; null hvis fraværende.",
            "example": 1200
          },
          "page": {
            "type": "integer",
            "example": 1
          },
          "perPage": {
            "type": "integer",
            "example": 25
          }
        },
        "example": {
          "items": [
            {
              "id": "185",
              "name": "Universitetet i Oslo",
              "acronym": "UiO",
              "country": "NO",
              "url": "https://api.cristin.no/v2/institutions/185"
            }
          ],
          "total": 1200,
          "page": 1,
          "perPage": 25
        }
      },
      "ConnectorDkUdbudNotices": {
        "type": "object",
        "title": "ConnectorDkUdbudNotices",
        "additionalProperties": false,
        "description": "Paginert liste over danske anskaffelsesvarsler (udbud). Kjøper (CVR), CPV-koder og estimert verdi per varsel.",
        "required": [
          "notices",
          "total",
          "offset",
          "limit"
        ],
        "properties": {
          "notices": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "noticeId",
                "noticeVersion",
                "publicationNumber",
                "sourceCountry",
                "source",
                "dataSource",
                "status",
                "title",
                "description",
                "buyer",
                "cpvCodes",
                "estimatedValue",
                "registeredAt",
                "publishedAt",
                "noticeType"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "dk_udbud:12345:1"
                },
                "noticeId": {
                  "type": "string",
                  "example": "12345"
                },
                "noticeVersion": {
                  "type": "string",
                  "example": "1"
                },
                "publicationNumber": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025/S 123-456"
                },
                "sourceCountry": {
                  "type": "string",
                  "enum": [
                    "DK"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "dk_udbud"
                  ]
                },
                "dataSource": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "active"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "IT-konsulentydelser"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "buyer": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "required": [
                    "name",
                    "cvr",
                    "country"
                  ],
                  "properties": {
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "Københavns Kommune"
                    },
                    "cvr": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "64942212"
                    },
                    "country": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "example": "DK"
                    }
                  }
                },
                "cpvCodes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "72000000"
                  ]
                },
                "estimatedValue": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "required": [
                    "amount",
                    "currency"
                  ],
                  "properties": {
                    "amount": {
                      "type": "number",
                      "example": 5000000
                    },
                    "currency": {
                      "type": "string",
                      "example": "DKK"
                    }
                  }
                },
                "registeredAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-04-01"
                },
                "publishedAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-04-02"
                },
                "noticeType": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "Udbudsbekendtgørelse"
                }
              }
            }
          },
          "total": {
            "type": "integer",
            "example": 240
          },
          "offset": {
            "type": "integer",
            "example": 0
          },
          "limit": {
            "type": "integer",
            "example": 20
          }
        },
        "example": {
          "notices": [
            {
              "id": "dk_udbud:12345:1",
              "noticeId": "12345",
              "noticeVersion": "1",
              "publicationNumber": "2025/S 123-456",
              "sourceCountry": "DK",
              "source": "dk_udbud",
              "dataSource": "TED",
              "status": "active",
              "title": "IT-konsulentydelser",
              "description": "Rammeaftale.",
              "buyer": {
                "name": "Københavns Kommune",
                "cvr": "64942212",
                "country": "DK"
              },
              "cpvCodes": [
                "72000000"
              ],
              "estimatedValue": {
                "amount": 5000000,
                "currency": "DKK"
              },
              "registeredAt": "2025-04-01",
              "publishedAt": "2025-04-02",
              "noticeType": "Udbudsbekendtgørelse"
            }
          ],
          "total": 240,
          "offset": 0,
          "limit": 20
        }
      },
      "ConnectorDoffinNotices": {
        "type": "object",
        "title": "ConnectorDoffinNotices",
        "additionalProperties": false,
        "description": "Paginert (cursor) liste over norske anskaffelsesvarsler (Doffin). Kjøper, frister, CPV-koder og estimert verdi per varsel.",
        "required": [
          "notices"
        ],
        "properties": {
          "notices": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "noticeId",
                "cpvCodes"
              ],
              "properties": {
                "noticeId": {
                  "type": "string",
                  "example": "2025-123456"
                },
                "publicationNumber": {
                  "type": "string"
                },
                "title": {
                  "type": "string",
                  "example": "Rammeavtale renhold"
                },
                "publishedAt": {
                  "type": "string",
                  "example": "2025-04-01"
                },
                "deadlineAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-05-01"
                },
                "description": {
                  "type": "string"
                },
                "buyer": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "orgnr": {
                      "type": "string",
                      "example": "958935420"
                    },
                    "name": {
                      "type": "string",
                      "example": "Oslo kommune"
                    },
                    "country": {
                      "type": "string",
                      "example": "NO"
                    },
                    "contactEmail": {
                      "type": "string"
                    },
                    "contactPhone": {
                      "type": "string"
                    }
                  }
                },
                "cpvCodes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "code": {
                        "type": "string",
                        "example": "90910000"
                      },
                      "description": {
                        "type": "string",
                        "example": "Rengjøring"
                      }
                    }
                  }
                },
                "estimatedValue": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "lowerBound": {
                      "type": "number"
                    },
                    "upperBound": {
                      "type": "number",
                      "example": 2000000
                    },
                    "currency": {
                      "type": "string",
                      "example": "NOK"
                    }
                  }
                },
                "procurementType": {
                  "type": "string"
                },
                "noticeType": {
                  "type": "string"
                },
                "sourceUrl": {
                  "type": "string"
                }
              }
            }
          },
          "totalCount": {
            "type": "integer",
            "minimum": 0,
            "example": 340
          },
          "nextPageToken": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "example": {
          "notices": [
            {
              "noticeId": "2025-123456",
              "publicationNumber": "2025/123456",
              "title": "Rammeavtale renhold",
              "publishedAt": "2025-04-01",
              "deadlineAt": "2025-05-01",
              "description": "Renhold av kommunale bygg.",
              "buyer": {
                "orgnr": "958935420",
                "name": "Oslo kommune",
                "country": "NO"
              },
              "cpvCodes": [
                {
                  "code": "90910000",
                  "description": "Rengjøring"
                }
              ],
              "estimatedValue": {
                "upperBound": 2000000,
                "currency": "NOK"
              },
              "procurementType": "Tjenester",
              "noticeType": "Kunngjøring av konkurranse",
              "sourceUrl": "https://doffin.no/notices/2025-123456"
            }
          ],
          "totalCount": 340,
          "nextPageToken": null
        }
      },
      "ConnectorTedNotices": {
        "type": "object",
        "title": "ConnectorTedNotices",
        "additionalProperties": false,
        "description": "Liste over TED-anskaffelsesvarsler (EU). Hvert varsel har CPV-koder, kjøper, frister og estimert verdi.",
        "required": [
          "notices"
        ],
        "properties": {
          "notices": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "noticeId",
                "cpvCodes"
              ],
              "properties": {
                "noticeId": {
                  "type": "string",
                  "example": "123456-2025"
                },
                "publicationNumber": {
                  "type": "string",
                  "example": "123456-2025"
                },
                "title": {
                  "type": "string",
                  "example": "Rammeavtale IT-konsulenttjenester"
                },
                "publicationDate": {
                  "type": "string",
                  "example": "2025-04-01"
                },
                "submissionDeadline": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "2025-05-15"
                },
                "buyerName": {
                  "type": "string",
                  "example": "Oslo kommune"
                },
                "buyerCountry": {
                  "type": "string",
                  "example": "NO"
                },
                "cpvCodes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "72000000"
                  ]
                },
                "contractNature": {
                  "type": "string",
                  "example": "Tjenester"
                },
                "procedureType": {
                  "type": "string",
                  "example": "Åpen anbudskonkurranse"
                },
                "noticeType": {
                  "type": "string"
                },
                "estimatedValue": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "example": 5000000
                },
                "estimatedValueCurrency": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "example": "NOK"
                },
                "sourceUrl": {
                  "type": "string"
                }
              }
            }
          },
          "totalNoticeCount": {
            "type": "integer",
            "minimum": 0,
            "example": 1200
          },
          "links": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Paginerings-/HATEOAS-lenker (nøkkel → URL)."
          }
        },
        "example": {
          "notices": [
            {
              "noticeId": "123456-2025",
              "publicationNumber": "123456-2025",
              "title": "Rammeavtale IT-konsulenttjenester",
              "publicationDate": "2025-04-01",
              "submissionDeadline": "2025-05-15",
              "buyerName": "Oslo kommune",
              "buyerCountry": "NO",
              "cpvCodes": [
                "72000000"
              ],
              "contractNature": "Tjenester",
              "procedureType": "Åpen anbudskonkurranse",
              "noticeType": "Kunngjøring av konkurranse",
              "estimatedValue": 5000000,
              "estimatedValueCurrency": "NOK",
              "sourceUrl": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2025:TEXT:EN:HTML"
            }
          ],
          "totalNoticeCount": 1200,
          "links": {
            "self": "https://ted.europa.eu/api/v3/notices/search?page=1"
          }
        }
      },
      "ConnectorYtjCompany": {
        "type": "object",
        "title": "ConnectorYtjCompany",
        "additionalProperties": false,
        "description": "Ett finsk selskap slått opp på business-id (PRH/YTJ v3). PRH-strukturen bevares (navn/selskapsformer/hovednæring/registeroppføringer); mange kodefelt er `string | number`.",
        "required": [
          "company",
          "source"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "ytj"
            ]
          },
          "company": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "businessId",
              "names",
              "companyForms",
              "registeredEntries"
            ],
            "properties": {
              "businessId": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "value"
                ],
                "properties": {
                  "value": {
                    "type": "string",
                    "example": "0112038-9"
                  },
                  "registrationDate": {
                    "type": "string",
                    "example": "1896-05-04"
                  },
                  "endDate": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "source": {
                    "type": [
                      "string",
                      "number"
                    ]
                  }
                }
              },
              "names": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "name"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "example": "Nokia Oyj"
                    },
                    "type": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "registrationDate": {
                      "type": "string"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "source": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "version": {
                      "type": [
                        "string",
                        "number"
                      ]
                    }
                  }
                }
              },
              "companyForms": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "descriptions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "languageCode": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "registrationDate": {
                      "type": "string"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "source": {
                      "type": [
                        "string",
                        "number"
                      ]
                    }
                  }
                }
              },
              "mainBusinessLine": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "type": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "descriptions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "languageCode": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "registrationDate": {
                    "type": "string"
                  }
                }
              },
              "registeredEntries": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "descriptions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "languageCode": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "status": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "registrationDate": {
                      "type": "string"
                    },
                    "endDate": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "authority": {
                      "type": [
                        "string",
                        "number"
                      ]
                    },
                    "register": {
                      "type": [
                        "string",
                        "number"
                      ]
                    }
                  }
                }
              },
              "lastModified": {
                "type": "string",
                "example": "2025-05-01"
              }
            }
          }
        },
        "example": {
          "source": "ytj",
          "company": {
            "businessId": {
              "value": "0112038-9",
              "registrationDate": "1896-05-04",
              "endDate": null
            },
            "names": [
              {
                "name": "Nokia Oyj",
                "type": "1"
              }
            ],
            "companyForms": [
              {
                "type": "OYJ",
                "descriptions": [
                  {
                    "languageCode": "fi",
                    "description": "Julkinen osakeyhtiö"
                  }
                ],
                "registrationDate": "1994-01-01"
              }
            ],
            "mainBusinessLine": {
              "type": "2630",
              "descriptions": [
                {
                  "languageCode": "en",
                  "description": "Manufacture of communication equipment"
                }
              ],
              "registrationDate": "2007-01-01"
            },
            "registeredEntries": [
              {
                "type": "1",
                "status": "2",
                "register": "1",
                "authority": "2",
                "registrationDate": "1896-05-04"
              }
            ],
            "lastModified": "2025-05-01"
          }
        }
      },
      "ConnectorDmiStations": {
        "type": "object",
        "title": "ConnectorDmiStations",
        "additionalProperties": false,
        "description": "Målestasjoner fra DMI med posisjon (GeoJSON Point) og hvilke parametere de måler.",
        "required": [
          "stations"
        ],
        "properties": {
          "stations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "stationId",
                "name",
                "country",
                "location",
                "parameterId"
              ],
              "properties": {
                "stationId": {
                  "type": "string",
                  "example": "06180"
                },
                "name": {
                  "type": "string",
                  "example": "København Lufthavn"
                },
                "country": {
                  "type": "string",
                  "example": "DNK"
                },
                "location": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "type",
                    "coordinates"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "Point"
                      ]
                    },
                    "coordinates": {
                      "type": "array",
                      "items": {
                        "type": "number"
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "description": "[lon, lat]",
                      "example": [
                        12.6508,
                        55.618
                      ]
                    }
                  }
                },
                "parameterId": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "temp_dry",
                    "wind_speed"
                  ]
                }
              }
            }
          }
        },
        "example": {
          "stations": [
            {
              "stationId": "06180",
              "name": "København Lufthavn",
              "country": "DNK",
              "location": {
                "type": "Point",
                "coordinates": [
                  12.6508,
                  55.618
                ]
              },
              "parameterId": [
                "temp_dry",
                "wind_speed"
              ]
            }
          ]
        }
      },
      "ConnectorDmiObservations": {
        "type": "object",
        "title": "ConnectorDmiObservations",
        "additionalProperties": false,
        "description": "Målingsobservasjoner fra DMI: verdi per stasjon/parameter/tidspunkt.",
        "required": [
          "observations"
        ],
        "properties": {
          "observations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "stationId",
                "parameterId",
                "obsTime",
                "value"
              ],
              "properties": {
                "stationId": {
                  "type": "string",
                  "example": "06180"
                },
                "parameterId": {
                  "type": "string",
                  "example": "temp_dry"
                },
                "obsTime": {
                  "type": "string",
                  "example": "2026-07-03T09:00:00Z"
                },
                "value": {
                  "type": "number",
                  "example": 18.4
                },
                "unit": {
                  "type": "string",
                  "example": "celsius"
                }
              }
            }
          }
        },
        "example": {
          "observations": [
            {
              "stationId": "06180",
              "parameterId": "temp_dry",
              "obsTime": "2026-07-03T09:00:00Z",
              "value": 18.4,
              "unit": "celsius"
            }
          ]
        }
      },
      "ConnectorNveStations": {
        "type": "array",
        "title": "ConnectorNveStations",
        "description": "Liste over NVEs hydrologiske målestasjoner med posisjon og tilgjengelige parameter-serier.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "stationId",
            "stationName",
            "latitude",
            "longitude",
            "masl",
            "drainageBasinKey",
            "parameters"
          ],
          "properties": {
            "stationId": {
              "type": "string",
              "example": "12.209.0"
            },
            "stationName": {
              "type": "string",
              "example": "Glomma ved Langnes"
            },
            "latitude": {
              "type": [
                "number",
                "null"
              ],
              "example": 59.5
            },
            "longitude": {
              "type": [
                "number",
                "null"
              ],
              "example": 11.2
            },
            "masl": {
              "type": [
                "number",
                "null"
              ],
              "description": "Høyde over havet (m)."
            },
            "drainageBasinKey": {
              "type": [
                "number",
                "null"
              ],
              "example": 2
            },
            "parameters": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "parameter",
                  "parameterName",
                  "unit",
                  "resolutions"
                ],
                "properties": {
                  "parameter": {
                    "type": "integer",
                    "example": 1001
                  },
                  "parameterName": {
                    "type": "string",
                    "example": "Vannføring"
                  },
                  "unit": {
                    "type": "string",
                    "example": "m³/s"
                  },
                  "resolutions": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "description": "Tilgjengelige tidsoppløsninger (minutter).",
                    "example": [
                      60,
                      1440
                    ]
                  }
                }
              }
            }
          }
        },
        "example": [
          {
            "stationId": "12.209.0",
            "stationName": "Glomma ved Langnes",
            "latitude": 59.5,
            "longitude": 11.2,
            "masl": 120,
            "drainageBasinKey": 2,
            "parameters": [
              {
                "parameter": 1001,
                "parameterName": "Vannføring",
                "unit": "m³/s",
                "resolutions": [
                  60,
                  1440
                ]
              }
            ]
          }
        ]
      },
      "ConnectorNveObservations": {
        "type": "array",
        "title": "ConnectorNveObservations",
        "description": "Tidsserier fra NVEs hydrologiske stasjoner: én serie per stasjon/parameter/ oppløsning med kvalitetskodede verdier.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "stationId",
            "parameter",
            "parameterName",
            "unit",
            "resolutionTime",
            "observations"
          ],
          "properties": {
            "stationId": {
              "type": "string",
              "example": "12.209.0"
            },
            "parameter": {
              "type": "integer",
              "example": 1001
            },
            "parameterName": {
              "type": "string",
              "example": "Vannføring"
            },
            "unit": {
              "type": "string",
              "example": "m³/s"
            },
            "resolutionTime": {
              "type": "integer",
              "description": "Tidsoppløsning (minutter).",
              "example": 1440
            },
            "observations": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "time",
                  "value",
                  "quality"
                ],
                "properties": {
                  "time": {
                    "type": "string",
                    "example": "2026-07-02T00:00:00Z"
                  },
                  "value": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "example": 245.7
                  },
                  "quality": {
                    "type": "integer",
                    "description": "NVEs kvalitetskode.",
                    "example": 0
                  }
                }
              }
            }
          }
        },
        "example": [
          {
            "stationId": "12.209.0",
            "parameter": 1001,
            "parameterName": "Vannføring",
            "unit": "m³/s",
            "resolutionTime": 1440,
            "observations": [
              {
                "time": "2026-07-02T00:00:00Z",
                "value": 245.7,
                "quality": 0
              }
            ]
          }
        ]
      },
      "ConnectorLuftkvalitetStations": {
        "type": "object",
        "title": "ConnectorLuftkvalitetStations",
        "additionalProperties": false,
        "description": "Norske luftkvalitets-målestasjoner (metadata, uten måleverdier): posisjon, kommune/fylke, stasjonstype og hvilke komponenter som måles.",
        "required": [
          "stations",
          "total"
        ],
        "properties": {
          "stations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "navn",
                "kommune",
                "fylke",
                "lat",
                "lon",
                "stasjonsType",
                "komponenter"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "NO0001A"
                },
                "navn": {
                  "type": "string",
                  "example": "Kirkeveien"
                },
                "kommune": {
                  "type": "string",
                  "example": "Oslo"
                },
                "fylke": {
                  "type": "string",
                  "example": "Oslo"
                },
                "lat": {
                  "type": "number",
                  "example": 59.9333
                },
                "lon": {
                  "type": "number",
                  "example": 10.7167
                },
                "stasjonsType": {
                  "type": "string",
                  "enum": [
                    "trafikk",
                    "bakgrunn",
                    "industri"
                  ]
                },
                "komponenter": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "PM10",
                      "PM2.5",
                      "NO2",
                      "O3",
                      "SO2"
                    ]
                  },
                  "example": [
                    "PM10",
                    "NO2"
                  ]
                }
              }
            }
          },
          "total": {
            "type": "integer",
            "example": 42
          }
        },
        "example": {
          "stations": [
            {
              "id": "NO0001A",
              "navn": "Kirkeveien",
              "kommune": "Oslo",
              "fylke": "Oslo",
              "lat": 59.9333,
              "lon": 10.7167,
              "stasjonsType": "trafikk",
              "komponenter": [
                "PM10",
                "NO2"
              ]
            }
          ],
          "total": 1
        }
      },
      "ConnectorNoArtskartObservations": {
        "type": "array",
        "title": "ConnectorNoArtskartObservations",
        "description": "Liste over artsobservasjoner fra Artskart: takson, sted (koordinat + kommune/ fylke), tidspunkt og datasett-provenans.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "id",
            "taxonId",
            "scientificName",
            "norwegianName",
            "observedAt",
            "observationYear",
            "latitude",
            "longitude",
            "municipality",
            "county",
            "datasetId",
            "datasetName",
            "dataProvider",
            "abundance",
            "source",
            "retrievedAt"
          ],
          "properties": {
            "id": {
              "type": "string",
              "example": "obs_123456"
            },
            "taxonId": {
              "type": [
                "string",
                "null"
              ],
              "example": "40631"
            },
            "scientificName": {
              "type": [
                "string",
                "null"
              ],
              "example": "Ursus maritimus"
            },
            "norwegianName": {
              "type": [
                "string",
                "null"
              ],
              "example": "isbjørn"
            },
            "observedAt": {
              "type": [
                "string",
                "null"
              ],
              "example": "2024-03-15"
            },
            "observationYear": {
              "type": [
                "integer",
                "null"
              ],
              "example": 2024
            },
            "latitude": {
              "type": [
                "number",
                "null"
              ],
              "example": 78.22
            },
            "longitude": {
              "type": [
                "number",
                "null"
              ],
              "example": 15.65
            },
            "municipality": {
              "type": [
                "string",
                "null"
              ],
              "example": "Svalbard"
            },
            "county": {
              "type": [
                "string",
                "null"
              ],
              "example": "Svalbard"
            },
            "datasetId": {
              "type": [
                "string",
                "null"
              ]
            },
            "datasetName": {
              "type": [
                "string",
                "null"
              ],
              "example": "Norsk Polarinstitutt"
            },
            "dataProvider": {
              "type": [
                "string",
                "null"
              ],
              "example": "Norsk Polarinstitutt"
            },
            "abundance": {
              "type": [
                "number",
                "null"
              ],
              "example": 2
            },
            "source": {
              "type": "string",
              "enum": [
                "no-artskart"
              ]
            },
            "retrievedAt": {
              "type": "string",
              "format": "date-time",
              "example": "2026-07-03T09:15:00.000Z"
            }
          }
        },
        "example": [
          {
            "id": "obs_123456",
            "taxonId": "40631",
            "scientificName": "Ursus maritimus",
            "norwegianName": "isbjørn",
            "observedAt": "2024-03-15",
            "observationYear": 2024,
            "latitude": 78.22,
            "longitude": 15.65,
            "municipality": "Svalbard",
            "county": "Svalbard",
            "datasetId": "ds-1",
            "datasetName": "Norsk Polarinstitutt",
            "dataProvider": "Norsk Polarinstitutt",
            "abundance": 2,
            "source": "no-artskart",
            "retrievedAt": "2026-07-03T09:15:00.000Z"
          }
        ]
      },
      "ConnectorLysingsbladListing": {
        "type": "object",
        "title": "ConnectorLysingsbladListing",
        "additionalProperties": false,
        "description": "Paginert liste over kunngjøringer i Norsk lysingsblad innen én kategori (proklama, gjeldsforhandlinger, mortifikasjoner, andre).",
        "required": [
          "source",
          "category",
          "page",
          "count",
          "entries"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "lysingsblad"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "proklama",
              "gjeldsforhandlingar",
              "mortifikasjonar",
              "andre-kunngjeringar"
            ]
          },
          "page": {
            "type": "integer",
            "example": 1
          },
          "count": {
            "type": "integer",
            "example": 20
          },
          "entries": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "upstreamId",
                "id",
                "source",
                "category",
                "publishedDate",
                "detailUrl"
              ],
              "properties": {
                "upstreamId": {
                  "type": "string",
                  "example": "2025-98765"
                },
                "id": {
                  "type": "string",
                  "example": "lysingsblad:2025-98765"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "lysingsblad"
                  ]
                },
                "category": {
                  "type": "string",
                  "enum": [
                    "proklama",
                    "gjeldsforhandlingar",
                    "mortifikasjonar",
                    "andre-kunngjeringar"
                  ]
                },
                "publishedDate": {
                  "type": "string",
                  "example": "2025-04-01"
                },
                "detailUrl": {
                  "type": "string",
                  "example": "https://www.lysingsbladet.no/kunngjoring/2025-98765"
                }
              }
            }
          }
        },
        "example": {
          "source": "lysingsblad",
          "category": "proklama",
          "page": 1,
          "count": 1,
          "entries": [
            {
              "upstreamId": "2025-98765",
              "id": "lysingsblad:2025-98765",
              "source": "lysingsblad",
              "category": "proklama",
              "publishedDate": "2025-04-01",
              "detailUrl": "https://www.lysingsbladet.no/kunngjoring/2025-98765"
            }
          ]
        }
      },
      "ConnectorSanksjonerLister": {
        "type": "object",
        "title": "ConnectorSanksjonerLister",
        "additionalProperties": false,
        "description": "Katalog over tilgjengelige sanksjonslister (via OpenSanctions) + historiske sunsettede lister. Statisk metadata; `status` reflekterer konfigurasjon.",
        "required": [
          "lister",
          "sunsetLister"
        ],
        "properties": {
          "lister": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "navn",
                "myndighet",
                "provider",
                "status",
                "dekning",
                "oppdateringsfrekvens",
                "endepunkt",
                "alternativEndepunkt",
                "lisens",
                "lisensNote",
                "upstreamUrl"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "eu-fsf"
                },
                "navn": {
                  "type": "string",
                  "example": "EU Financial Sanctions Files"
                },
                "myndighet": {
                  "type": "string",
                  "example": "EU"
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "opensanctions"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "aktiv",
                    "ikke_konfigurert"
                  ]
                },
                "dekning": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "personer",
                    "organisasjoner",
                    "fartoy"
                  ],
                  "properties": {
                    "personer": {
                      "type": "boolean"
                    },
                    "organisasjoner": {
                      "type": "boolean"
                    },
                    "fartoy": {
                      "type": "boolean"
                    }
                  }
                },
                "oppdateringsfrekvens": {
                  "type": "string",
                  "example": "Daglig"
                },
                "endepunkt": {
                  "type": "string",
                  "example": "/api/connectors/sanksjoner/eu-fsf/search"
                },
                "alternativEndepunkt": {
                  "type": "string"
                },
                "lisens": {
                  "type": "string",
                  "example": "CC-BY-NC 4.0"
                },
                "lisensNote": {
                  "type": "string"
                },
                "upstreamUrl": {
                  "type": "string",
                  "example": "https://www.opensanctions.org/datasets/eu_fsf/"
                }
              }
            }
          },
          "sunsetLister": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "navn",
                "myndighet",
                "status",
                "sunsetDato",
                "arsak",
                "alternativ"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "gammel-liste"
                },
                "navn": {
                  "type": "string"
                },
                "myndighet": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "sunsettet"
                  ]
                },
                "sunsetDato": {
                  "type": "string",
                  "example": "2025-01-01"
                },
                "arsak": {
                  "type": "string"
                },
                "alternativ": {
                  "type": "string"
                }
              }
            }
          }
        },
        "example": {
          "lister": [
            {
              "id": "eu-fsf",
              "navn": "EU Financial Sanctions Files",
              "myndighet": "EU",
              "provider": "opensanctions",
              "status": "aktiv",
              "dekning": {
                "personer": true,
                "organisasjoner": true,
                "fartoy": true
              },
              "oppdateringsfrekvens": "Daglig",
              "endepunkt": "/api/connectors/sanksjoner/eu-fsf/search",
              "alternativEndepunkt": "/api/connectors/eu-fsf/search",
              "lisens": "CC-BY-NC 4.0",
              "lisensNote": "Ikke-kommersiell bruk.",
              "upstreamUrl": "https://www.opensanctions.org/datasets/eu_fsf/"
            }
          ],
          "sunsetLister": []
        }
      },
      "ConnectorSodirCo2": {
        "type": "array",
        "title": "ConnectorSodirCo2",
        "description": "CO2-utslipp fra norsk sokkel. Uten `?aggregate` er hvert element en per-felt/ periode-måling; med `?aggregate=true` er hvert element en felt-aggregert totalsum.",
        "items": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": false,
              "description": "Per-felt/periode-måling (default).",
              "required": [
                "fieldName",
                "year",
                "month",
                "co2TotalTonnes",
                "breakdownBySource"
              ],
              "properties": {
                "fieldName": {
                  "type": "string",
                  "example": "TROLL"
                },
                "year": {
                  "type": "integer",
                  "example": 2024
                },
                "month": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "example": 6
                },
                "co2TotalTonnes": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "example": 125000
                },
                "breakdownBySource": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "gasTonnes",
                    "oilTonnes",
                    "flareTonnes"
                  ],
                  "properties": {
                    "gasTonnes": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 80000
                    },
                    "oilTonnes": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 30000
                    },
                    "flareTonnes": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "example": 15000
                    }
                  }
                }
              }
            },
            {
              "type": "object",
              "additionalProperties": false,
              "description": "Felt-aggregert totalsum (`aggregate=true`).",
              "required": [
                "fieldName",
                "co2TotalTonnes",
                "yearRange",
                "recordCount"
              ],
              "properties": {
                "fieldName": {
                  "type": "string",
                  "example": "TROLL"
                },
                "co2TotalTonnes": {
                  "type": "number",
                  "example": 2500000
                },
                "yearRange": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "start",
                    "end"
                  ],
                  "properties": {
                    "start": {
                      "type": "integer",
                      "example": 1996
                    },
                    "end": {
                      "type": "integer",
                      "example": 2024
                    }
                  }
                },
                "recordCount": {
                  "type": "integer",
                  "example": 336
                }
              }
            }
          ]
        },
        "example": [
          {
            "fieldName": "TROLL",
            "year": 2024,
            "month": 6,
            "co2TotalTonnes": 125000,
            "breakdownBySource": {
              "gasTonnes": 80000,
              "oilTonnes": 30000,
              "flareTonnes": 15000
            }
          }
        ]
      },
      "ConnectorSodirDecommissioning": {
        "type": "array",
        "title": "ConnectorSodirDecommissioning",
        "description": "Felt på norsk sokkel med nedstengings-/avviklingsstatus (fase).",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "fieldName",
            "operator",
            "status",
            "discoveryYear",
            "phase",
            "npdId"
          ],
          "properties": {
            "fieldName": {
              "type": "string",
              "example": "FRIGG"
            },
            "operator": {
              "type": [
                "string",
                "null"
              ],
              "example": "TotalEnergies"
            },
            "status": {
              "type": "string",
              "example": "SHUT DOWN"
            },
            "discoveryYear": {
              "type": [
                "integer",
                "null"
              ],
              "example": 1971
            },
            "phase": {
              "type": "string",
              "enum": [
                "in_production",
                "shut_down",
                "abandoned",
                "unknown"
              ]
            },
            "npdId": {
              "type": [
                "integer",
                "null"
              ],
              "example": 43625
            }
          }
        },
        "example": [
          {
            "fieldName": "FRIGG",
            "operator": "TotalEnergies",
            "status": "SHUT DOWN",
            "discoveryYear": 1971,
            "phase": "shut_down",
            "npdId": 43625
          }
        ]
      },
      "ConnectorSodirDiscoveries": {
        "type": "array",
        "title": "ConnectorSodirDiscoveries",
        "description": "Petroleumsfunn på norsk sokkel med operatør, funnår, hydrokarbontype og tilknytning til felt/brønn.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "operator",
            "status",
            "discoveryYear",
            "hcType",
            "npdId",
            "fieldName",
            "wellboreName",
            "mainArea",
            "province",
            "ownerKind",
            "ownerName",
            "dateIncludedInField",
            "centroid"
          ],
          "properties": {
            "name": {
              "type": "string",
              "example": "JOHAN SVERDRUP"
            },
            "operator": {
              "type": [
                "string",
                "null"
              ],
              "example": "Equinor"
            },
            "status": {
              "type": [
                "string",
                "null"
              ],
              "example": "Producing"
            },
            "discoveryYear": {
              "type": [
                "integer",
                "null"
              ],
              "example": 2010
            },
            "hcType": {
              "type": [
                "string",
                "null"
              ],
              "example": "OIL"
            },
            "npdId": {
              "type": [
                "integer",
                "null"
              ],
              "example": 20460323
            },
            "fieldName": {
              "type": [
                "string",
                "null"
              ],
              "example": "JOHAN SVERDRUP"
            },
            "wellboreName": {
              "type": [
                "string",
                "null"
              ],
              "example": "16/2-6"
            },
            "mainArea": {
              "type": [
                "string",
                "null"
              ],
              "example": "North sea"
            },
            "province": {
              "type": [
                "string",
                "null"
              ]
            },
            "ownerKind": {
              "type": [
                "string",
                "null"
              ]
            },
            "ownerName": {
              "type": [
                "string",
                "null"
              ]
            },
            "dateIncludedInField": {
              "type": [
                "string",
                "null"
              ]
            },
            "centroid": {
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2,
              "description": "[lat, lon] — kun satt med ?includeGeometry=true, ellers null."
            }
          }
        },
        "example": [
          {
            "name": "JOHAN SVERDRUP",
            "operator": "Equinor",
            "status": "Producing",
            "discoveryYear": 2010,
            "hcType": "OIL",
            "npdId": 20460323,
            "fieldName": "JOHAN SVERDRUP",
            "wellboreName": "16/2-6",
            "mainArea": "North sea",
            "province": null,
            "ownerKind": null,
            "ownerName": null,
            "dateIncludedInField": null,
            "centroid": null
          }
        ]
      },
      "ConnectorSodirFields": {
        "type": "array",
        "title": "ConnectorSodirFields",
        "description": "Felt på norsk sokkel med operatør, status og utvinnbare/gjenværende ressurser (Mill/Bill Sm³).",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "operator",
            "status",
            "discoveryYear",
            "npdId",
            "recoverableOilMillSm3",
            "recoverableGasBillSm3",
            "recoverableNglMillSm3",
            "recoverableCondensateMillSm3",
            "remainingOilMillSm3",
            "remainingGasBillSm3"
          ],
          "properties": {
            "name": {
              "type": "string",
              "example": "TROLL"
            },
            "operator": {
              "type": [
                "string",
                "null"
              ],
              "example": "Equinor Energy AS"
            },
            "status": {
              "type": "string",
              "example": "IN PRODUCTION"
            },
            "discoveryYear": {
              "type": [
                "integer",
                "null"
              ],
              "example": 1979
            },
            "npdId": {
              "type": [
                "integer",
                "null"
              ],
              "example": 43765
            },
            "recoverableOilMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 230.5
            },
            "recoverableGasBillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 1310
            },
            "recoverableNglMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 26.4
            },
            "recoverableCondensateMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 2.1
            },
            "remainingOilMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 18.7
            },
            "remainingGasBillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 640
            }
          }
        },
        "example": [
          {
            "name": "TROLL",
            "operator": "Equinor Energy AS",
            "status": "IN PRODUCTION",
            "discoveryYear": 1979,
            "npdId": 43765,
            "recoverableOilMillSm3": 230.5,
            "recoverableGasBillSm3": 1310,
            "recoverableNglMillSm3": 26.4,
            "recoverableCondensateMillSm3": 2.1,
            "remainingOilMillSm3": 18.7,
            "remainingGasBillSm3": 640
          }
        ]
      },
      "ConnectorSodirLicences": {
        "type": "array",
        "title": "ConnectorSodirLicences",
        "description": "Utvinningstillatelser på norsk sokkel med status, fase, areal og operatør.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "npdId",
            "name",
            "status",
            "phase",
            "mainArea",
            "dateGranted",
            "dateValidTo",
            "originalAreaKm2",
            "currentAreaKm2",
            "operatorName",
            "operatorNpdId"
          ],
          "properties": {
            "npdId": {
              "type": [
                "integer",
                "null"
              ],
              "example": 20460
            },
            "name": {
              "type": "string",
              "example": "PL 501"
            },
            "status": {
              "type": [
                "string",
                "null"
              ],
              "example": "ACTIVE"
            },
            "phase": {
              "type": [
                "string",
                "null"
              ],
              "example": "PRODUCTION"
            },
            "mainArea": {
              "type": [
                "string",
                "null"
              ],
              "example": "North sea"
            },
            "dateGranted": {
              "type": [
                "string",
                "null"
              ],
              "example": "2009-05-08"
            },
            "dateValidTo": {
              "type": [
                "string",
                "null"
              ],
              "example": "2040-01-01"
            },
            "originalAreaKm2": {
              "type": [
                "number",
                "null"
              ],
              "example": 340.5
            },
            "currentAreaKm2": {
              "type": [
                "number",
                "null"
              ],
              "example": 120.2
            },
            "operatorName": {
              "type": [
                "string",
                "null"
              ],
              "example": "Equinor Energy AS"
            },
            "operatorNpdId": {
              "type": [
                "integer",
                "null"
              ],
              "example": 2410
            }
          }
        },
        "example": [
          {
            "npdId": 20460,
            "name": "PL 501",
            "status": "ACTIVE",
            "phase": "PRODUCTION",
            "mainArea": "North sea",
            "dateGranted": "2009-05-08",
            "dateValidTo": "2040-01-01",
            "originalAreaKm2": 340.5,
            "currentAreaKm2": 120.2,
            "operatorName": "Equinor Energy AS",
            "operatorNpdId": 2410
          }
        ]
      },
      "ConnectorSodirProduction": {
        "type": "array",
        "title": "ConnectorSodirProduction",
        "description": "Månedlig netto feltproduksjon på norsk sokkel (SODIR-enheter: Mill Sm³ olje/NGL/ kondensat/oljeekvivalenter, Bill Sm³ gass).",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "year",
            "month",
            "fieldName",
            "oilNetMillSm3",
            "gasNetBillSm3",
            "nglNetMillSm3",
            "condensateNetMillSm3",
            "oilEquivNetMillSm3"
          ],
          "properties": {
            "year": {
              "type": "integer",
              "example": 2024
            },
            "month": {
              "type": "integer",
              "example": 6
            },
            "fieldName": {
              "type": "string",
              "example": "TROLL"
            },
            "oilNetMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 1.2
            },
            "gasNetBillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 3.4
            },
            "nglNetMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 0.1
            },
            "condensateNetMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 0.05
            },
            "oilEquivNetMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 4.8
            }
          }
        },
        "example": [
          {
            "year": 2024,
            "month": 6,
            "fieldName": "TROLL",
            "oilNetMillSm3": 1.2,
            "gasNetBillSm3": 3.4,
            "nglNetMillSm3": 0.1,
            "condensateNetMillSm3": 0.05,
            "oilEquivNetMillSm3": 4.8
          }
        ]
      },
      "ConnectorSodirProductionByOperator": {
        "type": "array",
        "title": "ConnectorSodirProductionByOperator",
        "description": "Netto produksjon på norsk sokkel aggregert per operatør (SODIR-enheter).",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "operator",
            "oilNetMillSm3",
            "gasNetBillSm3",
            "condensateNetMillSm3",
            "oilEquivNetMillSm3",
            "fieldCount"
          ],
          "properties": {
            "operator": {
              "type": "string",
              "example": "EQUINOR ENERGY AS"
            },
            "oilNetMillSm3": {
              "type": "number",
              "example": 45.2
            },
            "gasNetBillSm3": {
              "type": "number",
              "example": 38.1
            },
            "condensateNetMillSm3": {
              "type": "number",
              "example": 2.4
            },
            "oilEquivNetMillSm3": {
              "type": "number",
              "example": 88.9
            },
            "fieldCount": {
              "type": "integer",
              "example": 32
            }
          }
        },
        "example": [
          {
            "operator": "EQUINOR ENERGY AS",
            "oilNetMillSm3": 45.2,
            "gasNetBillSm3": 38.1,
            "condensateNetMillSm3": 2.4,
            "oilEquivNetMillSm3": 88.9,
            "fieldCount": 32
          }
        ]
      },
      "ConnectorSodirReserves": {
        "type": "array",
        "title": "ConnectorSodirReserves",
        "description": "Gjenværende og utvinnbare reserver per felt på norsk sokkel (SODIR-enheter + BOE-aggregat).",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "fieldName",
            "operator",
            "status",
            "remainingOilMillSm3",
            "remainingGasBillSm3",
            "recoverableOilMillSm3",
            "recoverableGasBillSm3",
            "recoverableNglMillSm3",
            "recoverableCondensateMillSm3",
            "remainingBoe",
            "recoverableBoe"
          ],
          "properties": {
            "fieldName": {
              "type": "string",
              "example": "TROLL"
            },
            "operator": {
              "type": [
                "string",
                "null"
              ],
              "example": "Equinor Energy AS"
            },
            "status": {
              "type": "string",
              "example": "IN PRODUCTION"
            },
            "remainingOilMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 18.7
            },
            "remainingGasBillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 640
            },
            "recoverableOilMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 230.5
            },
            "recoverableGasBillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 1310
            },
            "recoverableNglMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 26.4
            },
            "recoverableCondensateMillSm3": {
              "type": [
                "number",
                "null"
              ],
              "example": 2.1
            },
            "remainingBoe": {
              "type": [
                "number",
                "null"
              ],
              "example": 4200
            },
            "recoverableBoe": {
              "type": [
                "number",
                "null"
              ],
              "example": 9800
            }
          }
        },
        "example": [
          {
            "fieldName": "TROLL",
            "operator": "Equinor Energy AS",
            "status": "IN PRODUCTION",
            "remainingOilMillSm3": 18.7,
            "remainingGasBillSm3": 640,
            "recoverableOilMillSm3": 230.5,
            "recoverableGasBillSm3": 1310,
            "recoverableNglMillSm3": 26.4,
            "recoverableCondensateMillSm3": 2.1,
            "remainingBoe": 4200,
            "recoverableBoe": 9800
          }
        ]
      },
      "ConnectorSodirWellbores": {
        "type": "array",
        "title": "ConnectorSodirWellbores",
        "description": "Brønner på norsk sokkel med formål, status, innhold og posisjon.",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "fieldName",
            "purpose",
            "status",
            "content",
            "completionYear",
            "coordinates"
          ],
          "properties": {
            "name": {
              "type": "string",
              "example": "16/2-6"
            },
            "fieldName": {
              "type": [
                "string",
                "null"
              ],
              "example": "JOHAN SVERDRUP"
            },
            "purpose": {
              "type": [
                "string",
                "null"
              ],
              "example": "WILDCAT"
            },
            "status": {
              "type": [
                "string",
                "null"
              ],
              "example": "PLUGGED"
            },
            "content": {
              "type": [
                "string",
                "null"
              ],
              "example": "OIL"
            },
            "completionYear": {
              "type": [
                "integer",
                "null"
              ],
              "example": 2010
            },
            "coordinates": {
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2,
              "description": "[lat, lon] — null hvis utilgjengelig.",
              "example": [
                58.85,
                1.75
              ]
            }
          }
        },
        "example": [
          {
            "name": "16/2-6",
            "fieldName": "JOHAN SVERDRUP",
            "purpose": "WILDCAT",
            "status": "PLUGGED",
            "content": "OIL",
            "completionYear": 2010,
            "coordinates": [
              58.85,
              1.75
            ]
          }
        ]
      }
    },
    "parameters": {
      "OrgnrPath": {
        "name": "orgnr",
        "in": "path",
        "required": true,
        "description": "Norsk organisasjonsnummer (9 siffer, MOD-11-validert).",
        "schema": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "example": "974760673"
        }
      },
      "SourceKeyPath": {
        "name": "kilde",
        "in": "path",
        "required": true,
        "description": "Kilde-nøkkel (kebab-case). Se `Source.key` for full liste.",
        "schema": {
          "type": "string",
          "title": "SourceKey",
          "description": "Kebab-case kilde-nøkkel. Service-siden bruker snake_case-aliaser.",
          "enum": [
            "brreg",
            "ssb",
            "norges-bank",
            "enhetsregister",
            "proff",
            "bygg-anlegg",
            "eksportor",
            "kartverket",
            "sodir",
            "ais",
            "artskart",
            "avinor",
            "barentswatch",
            "elhub",
            "fhi",
            "finanstilsynet",
            "finansinspektionen-se",
            "finanstilsynet-dk",
            "fisheries",
            "fri-nettleie",
            "frost",
            "geonorge",
            "hoyesterett",
            "konkurs",
            "kommunedatabasen",
            "kostra",
            "lakselus",
            "lovtidend",
            "luftkvalitet",
            "lysingsblad",
            "mattilsynet-smilefjes",
            "met",
            "nav",
            "nb-dhlab",
            "norske-utslipp",
            "nve",
            "nvdb",
            "oslobors",
            "patentstyret",
            "politiloggen",
            "regjeringen",
            "rss-news",
            "sdir",
            "stortinget",
            "stromprise",
            "udir",
            "connectors",
            "data-quality",
            "audit",
            "companies",
            "persons",
            "kg",
            "sync",
            "config",
            "sync-state",
            "storage",
            "discovery",
            "lineage",
            "backup",
            "metrics",
            "dashboard",
            "brreg-endringer",
            "nav-grunnbelop"
          ]
        }
      },
      "EndepunktPath": {
        "name": "endepunkt",
        "in": "path",
        "required": true,
        "description": "Ressurs-path inn mot kilden. Format og lovlige verdier varierer per\nkilde — se [docs/DATA_PROXY.md](https://github.com/andreas-t-hjertaker/ketl-innsiktsmaskin-web/blob/main/docs/DATA_PROXY.md).\n",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "example": "selskap/974760673"
        }
      }
    },
    "responses": {
      "Problem": {
        "description": "Standardisert feil per RFC 9457.",
        "content": {
          "application/problem+json": {
            "schema": {
              "type": "object",
              "title": "Problem",
              "required": [
                "type",
                "title",
                "status"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "format": "uri-reference",
                  "default": "about:blank",
                  "description": "Stabil identifikator for feiltypen.",
                  "example": "https://data.ketl.no/errors/rate-limit-exceeded"
                },
                "title": {
                  "type": "string",
                  "description": "Kort menneskelig oppsummering. Skal IKKE endres mellom requests."
                },
                "status": {
                  "type": "integer",
                  "minimum": 100,
                  "maximum": 599
                },
                "detail": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Konkret beskrivelse av denne instansen."
                },
                "instance": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uri-reference",
                  "description": "URI til denne instansen av feilen (f.eks. en request-id)."
                },
                "ketlRequestId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Korrelerings-ID. Send tilbake ved support-henvendelse."
                },
                "ketlRetryAfterMs": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Antall millisekunder klient bør vente før retry (alternativ til Retry-After-header for fetch-baserte klienter)."
                }
              },
              "example": {
                "type": "https://data.ketl.no/errors/rate-limit-exceeded",
                "title": "Rate limit exceeded",
                "status": 429,
                "detail": "Du har gjort 1001 calls i siste 60 sekunder; tier `pro` tillater 1000.",
                "ketlRequestId": "req_01HZN3R5QKV8MQX7K9C2W6J5RT",
                "ketlRetryAfterMs": 60000
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "ketl-api-key",
        "description": "API-nøkkel utstedt fra `/dashboard/utvikler`. Format `kpk_*` (Pro/Team)\neller `ksk_*` (Enterprise). Send som `Authorization: Bearer <key>`.\n"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ]
}
