---
openapi: "3.0.0"
info:
  version: "2.0.1"
  title: "Bestuurlijke Grenzen API"
  contact:
    name: "Kadaster DSO - Beheer"
    email: "beheerdso@kadaster.nl"
  termsOfService: "https://developer.omgevingswet.overheid.nl/services/fair-use-policy/"
  description: |-
    De Bestuurlijke grenzen API is een aanvullende dienst ten opzichte van de diensten die de BRK aanbiedt. De verantwoordelijkheid voor de Bestuurlijke grenzen API ligt bij Informatiehuis Ruimte. Tot de doelgroep van de Bestuurlijke grenzen API behoren alle gebruikers die behoefte hebben aan de door het Kadaster vastgestelde bestuurlijke grenzen van gemeenten, provincies en rijksgrenzen. Naast deze grenzen zijn ook de grenzen van waterschappen toegevoegd, deze grenzen zijn aangeleverd door Het Waterschapshuis. Naast de rijksgrens die het Kadaster vaststelt ontsluit deze API ook een tweetal rijksgrenzen die door het Ministerie van Binnenlandse Zaken zijn aangeleverd ten behoeve van het gebruik binnen het DSO. In de API worden ook de OIN's van de bevoegde gezagen terug gegeven, het eigenaarschap van de OIN's ligt bij Logius en in de API worden alleen OIN's teruggegeven van de bevoegde gezagen die in de dataset zitten.
    Deze API betreft de 2e versie van de bestuurlijke grenzen API, inclusief de mogelijkheid tot historische bevragingen.
    Wat betreft de dataset met de beheergrenzen van de 21 waterschappen in Nederland die in deze API gebruik is geldt het volgende: “Het betreft de as-is situatie per 01-04-2019. Deze set is bedoeld voor gebruik in het Digitaal Stelsel Omgevingswet (DSO). De set is nog niet conform INSPIRE-specificaties. Inhoudelijke harmonisatie (topologische correctheid) door de waterschappen moet nog gedaan worden. Elk waterschap is bronhouder van de eigen beheergrens. Credits: Unie van Waterschappen in samenwerking met Het Waterschapshuis.
paths:
  /openbare-lichamen:
    get:
      parameters:
      - $ref: "#/components/parameters/oin"
      - $ref: "#/components/parameters/codeQuery"
      - $ref: "#/components/parameters/typeOpenbaarLichaam"
      - $ref: "#/components/parameters/bestuurslaag"
      - $ref: "#/components/parameters/geldigOp"
      - $ref: "#/components/parameters/expand"
      - $ref: "#/components/parameters/acceptCrs"
      - $ref: "#/components/parameters/page"
      - $ref: "#/components/parameters/pageSize"
      - $ref: "#/components/parameters/apiKey"
      - $ref: "#/components/parameters/xForwardedProto"
      - $ref: "#/components/parameters/xForwardedHost"
      - $ref: "#/components/parameters/xForwardedPrefix"
      responses:
        "200":
          $ref: "#/components/responses/OpenbareLichamen"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "406":
          $ref: "#/components/responses/406"
        "503":
          $ref: "#/components/responses/503"
      summary: "Collectie van openbare lichamen"
  /openbare-lichamen/_zoek:
    post:
      parameters:
      - $ref: "#/components/parameters/typeOpenbaarLichaam"
      - $ref: "#/components/parameters/bestuurslaag"
      - $ref: "#/components/parameters/geldigOp"
      - $ref: "#/components/parameters/expand"
      - $ref: "#/components/parameters/acceptCrs"
      - $ref: "#/components/parameters/contentCrs"
      - $ref: "#/components/parameters/page"
      - $ref: "#/components/parameters/pageSize"
      - $ref: "#/components/parameters/apiKey"
      - $ref: "#/components/parameters/xForwardedProto"
      - $ref: "#/components/parameters/xForwardedHost"
      - $ref: "#/components/parameters/xForwardedPrefix"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: "object"
              properties:
                geometrie:
                  description: "Het veld waarop geografisch gezocht moet worden. In\
                    \ dit geval is dit het veld `geometrie`."
                  type: "object"
                  oneOf:
                  - $ref: "#/components/schemas/Intersects"
                  - $ref: "#/components/schemas/Contains"
                  - $ref: "#/components/schemas/Within"
      responses:
        "200":
          $ref: "#/components/responses/OpenbareLichamen"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "406":
          $ref: "#/components/responses/406"
        "503":
          $ref: "#/components/responses/503"
      summary: "Zoeken op openbare lichamen"
  /openbare-lichamen/{code}:
    get:
      parameters:
      - $ref: "#/components/parameters/code"
      - $ref: "#/components/parameters/expand"
      - $ref: "#/components/parameters/acceptCrs"
      - $ref: "#/components/parameters/apiKey"
      - $ref: "#/components/parameters/xForwardedProto"
      - $ref: "#/components/parameters/xForwardedHost"
      - $ref: "#/components/parameters/xForwardedPrefix"
      responses:
        "200":
          $ref: "#/components/responses/OpenbaarLichaam"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "406":
          $ref: "#/components/responses/406"
        "503":
          $ref: "#/components/responses/503"
      summary: "Enkel openbaar lichaam"
  /bestuurlijke-gebieden:
    get:
      parameters:
      - $ref: "#/components/parameters/identificatie"
      - $ref: "#/components/parameters/typeBestuurlijkGebied"
      - $ref: "#/components/parameters/openbaarLichaam"
      - $ref: "#/components/parameters/geldigOp"
      - $ref: "#/components/parameters/acceptCrs"
      - $ref: "#/components/parameters/page"
      - $ref: "#/components/parameters/pageSize"
      - $ref: "#/components/parameters/apiKey"
      - $ref: "#/components/parameters/xForwardedProto"
      - $ref: "#/components/parameters/xForwardedHost"
      - $ref: "#/components/parameters/xForwardedPrefix"
      responses:
        "200":
          $ref: "#/components/responses/BestuurlijkeGebieden"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "406":
          $ref: "#/components/responses/406"
        "503":
          $ref: "#/components/responses/503"
      summary: "Collectie van bestuurlijke gebieden"
  /bestuurlijke-gebieden/_zoek:
    post:
      parameters:
      - $ref: "#/components/parameters/typeBestuurlijkGebied"
      - $ref: "#/components/parameters/openbaarLichaam"
      - $ref: "#/components/parameters/geldigOp"
      - $ref: "#/components/parameters/acceptCrs"
      - $ref: "#/components/parameters/contentCrs"
      - $ref: "#/components/parameters/page"
      - $ref: "#/components/parameters/pageSize"
      - $ref: "#/components/parameters/apiKey"
      - $ref: "#/components/parameters/xForwardedProto"
      - $ref: "#/components/parameters/xForwardedHost"
      - $ref: "#/components/parameters/xForwardedPrefix"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: "object"
              properties:
                geometrie:
                  description: "Het veld waarop geografisch gezocht moet worden. In\
                    \ dit geval is dit het veld `geometrie`."
                  type: "object"
                  oneOf:
                  - $ref: "#/components/schemas/Intersects"
                  - $ref: "#/components/schemas/Contains"
                  - $ref: "#/components/schemas/Within"
      responses:
        "200":
          $ref: "#/components/responses/BestuurlijkeGebieden"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "406":
          $ref: "#/components/responses/406"
        "503":
          $ref: "#/components/responses/503"
      summary: "Zoeken op bestuurlijke gebieden"
  /bestuurlijke-gebieden/{id}:
    get:
      parameters:
      - $ref: "#/components/parameters/id"
      - $ref: "#/components/parameters/acceptCrs"
      - $ref: "#/components/parameters/apiKey"
      - $ref: "#/components/parameters/xForwardedProto"
      - $ref: "#/components/parameters/xForwardedHost"
      - $ref: "#/components/parameters/xForwardedPrefix"
      responses:
        "200":
          $ref: "#/components/responses/BestuurlijkGebied"
        "400":
          $ref: "#/components/responses/400"
        "401":
          $ref: "#/components/responses/401"
        "403":
          $ref: "#/components/responses/403"
        "406":
          $ref: "#/components/responses/406"
        "503":
          $ref: "#/components/responses/503"
      summary: "Een specifiek bestuurlijk gebied"
  /app-health:
    get:
      tags:
      - "Metadata"
      operationId: "getAppHealth"
      summary: "Vraag de actuele applicatiestatus op."
      description: "De applicatiestatus kan zijn UP of DOWN. Dit endpoint levert een\
        \ object met daarin alleen die status."
      responses:
        "200":
          description: "Dienst is beschikbaar"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthInfo"
              examples:
                default:
                  summary: "Voorbeeld response"
                  value:
                    status: "UP"
        "503":
          description: "Dienst is niet beschikbaar"
  /app-info:
    get:
      tags:
      - "Metadata"
      operationId: "getAppInfo"
      summary: "Vraag actuele applicatie-eigenschappen op."
      description: "De Bestuurlijke grenzen API is een aanvullende dienst ten opzichte\
        \ van de diensten die de BRK aanbiedt."
      responses:
        "200":
          description: "Applicatie-informatie"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AppInfo"
              examples:
                default:
                  summary: "Voorbeeld response"
                  value:
                    name: "bestuurlijke-grenzen-api"
                    version: "2.0.0"
                    description: "description van bestuurlijke grenzen api"
components:
  headers:
    Content-Crs:
      description: "CRS van de teruggegeven geometrie"
      schema:
        type: "string"
        default: "epsg:4258"
        enum:
        - "epsg:4258"
        - "epsg:28992"
    API-Version:
      description: "Versie van de API"
      schema:
        type: "string"
    X-Pagination-Limit:
      description: "Aantal Objecten per pagina"
      schema:
        format: "int32"
        type: "integer"
    X-Pagination-Page:
      description: "Nummer van de huidige pagina (paginanummering start bij 1)"
      schema:
        format: "int32"
        type: "integer"
  parameters:
    bestuurslaag:
      description: "Bestuurslaag"
      in: "query"
      name: "bestuurslaag"
      required: false
      schema:
        type: "string"
        enum:
        - "rijk"
        - "ministerie"
        - "provincie"
        - "waterschap"
        - "gemeenschappelijke regeling"
        - "gemeente"
    code:
      name: "code"
      description: |-
        Voor gemeentes, provincies en waterschappen wordt de CBS code gehanteerd. Voor het Rijk wordt de RVIG code gehanteerd. De codes hebben het volgende formaat:
          - Gemeentes: GM\d{4}  <br>
            bijvoorbeeld: GM1234
          - Provincies: PV\d{2}  <br>
            bijvoorbeeld: PV12
          - Waterschappen: WS\d{4}  <br>
            bijvoorbeeld: WS1234
          - Rijk: LND\d{4}  <br>
            bijvoorbeeld: LND6030
      in: "path"
      required: false
      schema:
        type: "string"
        pattern: "^((PV\\d{2})|((GM|WS|LND)\\d{4}))$"
    codeQuery:
      name: "code"
      description: |-
        Voor gemeentes, provincies en waterschappen wordt de CBS code gehanteerd. Voor het Rijk wordt de RVIG code gehanteerd. De codes hebben het volgende formaat:
          - Gemeentes: GM\d{4}  <br>
            bijvoorbeeld: GM1234
          - Provincies: PV\d{2}  <br>
            bijvoorbeeld: PV12
          - Waterschappen: WS\d{4}  <br>
            bijvoorbeeld: WS1234
          - Rijk: LND\d{4}  <br>
            bijvoorbeeld: LND6030
      in: "query"
      required: false
      schema:
        type: "string"
        pattern: "^((PV\\d{2})|((GM|WS|LND)\\d{4}))$"
    id:
      name: "id"
      description: "identifier van de resource beschrijving. Let op! Deze parameter\
        \ is niet bedoeld om functioneel mee te \"filteren\" en kan mogelijk veranderen\
        \ in de loop der tijd. Functionele filters kunnen op collectie- en zoek endpoints\
        \ toegepast worden."
      in: "path"
      required: true
      schema:
        type: "string"
    identificatie:
      name: "identificatie"
      description: |-
        Voor de identificatie van bestuurlijke gebieden van gemeentes, provincies en waterschappen wordt de CBS code gehanteerd. Voor het Rijk wordt de RVIG code gehanteerd, met een extra discriminator voor het specifieke gebied. De codes hebben het volgende formaat:
          - Gemeentes: GM\d{4}  <br>
            bijvoorbeeld: GM1234
          - Provincies: PV\d{2}  <br>
            bijvoorbeeld: PV12
          - Waterschappen: WS\d{4}  <br>
            bijvoorbeeld: WS1234
          - Rijk: LND\d{4}\..{1}  <br>
            bijvoorbeeld: LND6030.A (landsgrens + territoriale wateren) of LND6030.B (landsgrens + territoriale wateren + EEZ)
      in: "query"
      required: false
      schema:
        type: "string"
        pattern: "^((PV\\d{2})|((GM|WS)\\d{4})|(LND\\d{4}\\..{1}))$"
    oin:
      name: "oin"
      description: "OIN"
      in: "query"
      required: false
      schema:
        type: "string"
    typeOpenbaarLichaam:
      name: "type"
      description: "Type openbaar lichaam"
      in: "query"
      required: false
      schema:
        type: "string"
        enum:
        - "Rijk"
        - "Waterschap"
        - "Provincie"
        - "Gemeente"
    typeBestuurlijkGebied:
      name: "type"
      description: "Type bestuurlijk gebied"
      in: "query"
      required: false
      schema:
        type: "string"
        enum:
        - "territoriaal"
        - "territoriaalInclusiefEEZ"
    openbaarLichaam:
      name: "openbaarLichaam"
      description: "De code van het gerelateerde openbaar lichaam"
      in: "query"
      required: false
      schema:
        type: "string"
    geldigOp:
      description: "Datum waarop de resource geldig moet zijn. Wanneer niet gespecificeerd\
        \ geldt de huidige systeemdatum."
      in: "query"
      name: "geldigOp"
      required: false
      schema:
        type: "string"
        format: "date"
    expand:
      name: "expand"
      in: "query"
      required: false
      schema:
        type: "array"
        items:
          type: "string"
          enum:
          - "territoriaalGebied"
    page:
      description: "Pagina nummer"
      name: "page"
      in: "query"
      required: false
      schema:
        type: "integer"
        minimum: 1
        default: 1
    pageSize:
      name: "pageSize"
      in: "query"
      required: false
      schema:
        type: "integer"
        enum:
        - 10
        - 20
        - 50
        default: 10
    acceptCrs:
      description: "Gewenste CRS van de coördinaten in de response"
      in: "header"
      name: "Accept-Crs"
      required: false
      schema:
        type: "string"
        default: "epsg:4258"
        enum:
        - "epsg:4258"
        - "epsg:28992"
    contentCrs:
      name: "Content-Crs"
      description: "Coordinaatreferentiesysteem van de meegegeven geometrie"
      in: "header"
      required: false
      schema:
        default: "epsg:4258"
        enum:
        - "epsg:4258"
        - "epsg:28992"
        type: "string"
    apiKey:
      description: "Geldige API Key om deze request uit te kunnen voeren."
      in: "header"
      name: "X-Api-Key"
      required: true
      schema:
        type: "string"
    xForwardedProto:
      name: "X-Forwarded-Proto"
      description: "Het protocol waarmee de gebruiker verbinding heeft gemaakt"
      in: "header"
      required: false
      schema:
        type: "string"
    xForwardedHost:
      name: "X-Forwarded-Host"
      description: "De oorspronkelijke host zoals door de gebruiker opgevraagd met\
        \ de Host header"
      in: "header"
      required: false
      schema:
        type: "string"
    xForwardedPrefix:
      name: "X-Forwarded-Prefix"
      description: "De oorspronkelijke path prefix zoals door de gebruiker opgevraagd"
      in: "header"
      required: false
      schema:
        type: "string"
  responses:
    "400":
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/ExtendedError"
      description: "Bad request. Je request body bevat geen geldige JSON of de query\
        \ wordt niet ondersteund door de API."
      headers:
        API-Version:
          $ref: "#/components/headers/API-Version"
    "401":
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error"
      description: "Unauthorized. Je hebt waarschijnlijk geen geldige `X-Api-Key`\
        \ header meegestuurd."
      headers:
        API-Version:
          $ref: "#/components/headers/API-Version"
    "403":
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error"
      description: "Forbidden. Je hebt geen rechten om deze URL te benaderen."
    "404":
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error"
      description: "Not found"
      headers:
        API-Version:
          $ref: "#/components/headers/API-Version"
    "406":
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error"
      description: "Not Acceptable. Je hebt waarschijnlijk een gewenst formaat met\
        \ de `Accept` header verstuurd welke niet ondersteund wordt. De API kan momenteel\
        \ alleen `application/hal+json` terugsturen."
      headers:
        API-Version:
          $ref: "#/components/headers/API-Version"
    "503":
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error"
      description: "Service Unavailable. Er vindt mogelijk (gepland) onderhoud of\
        \ een storing plaats."
      headers:
        API-Version:
          $ref: "#/components/headers/API-Version"
    OpenbaarLichaam:
      content:
        application/hal+json:
          schema:
            type: "object"
            required:
            - "uri"
            allOf:
            - $ref: "#/components/schemas/OpenbaarLichaam"
      description: "OK."
      headers:
        Content-Crs:
          $ref: "#/components/headers/Content-Crs"
    OpenbareLichamen:
      content:
        application/hal+json:
          schema:
            required:
            - "_embedded"
            - "_links"
            type: "object"
            properties:
              _embedded:
                type: "object"
                required:
                - "openbareLichamen"
                properties:
                  openbareLichamen:
                    type: "array"
                    items:
                      $ref: "#/components/schemas/OpenbaarLichaam"
              _links:
                $ref: "#/components/schemas/CollectieLinks"
      description: "OK."
      headers:
        Content-Crs:
          $ref: "#/components/headers/Content-Crs"
        X-Pagination-Limit:
          $ref: "#/components/headers/X-Pagination-Limit"
        X-Pagination-Page:
          $ref: "#/components/headers/X-Pagination-Page"
    BestuurlijkGebied:
      content:
        application/hal+json:
          schema:
            $ref: "#/components/schemas/BestuurlijkGebied"
      description: "OK."
      headers:
        Content-Crs:
          $ref: "#/components/headers/Content-Crs"
    BestuurlijkeGebieden:
      content:
        application/hal+json:
          schema:
            required:
            - "_embedded"
            - "_links"
            type: "object"
            properties:
              _embedded:
                type: "object"
                required:
                - "bestuurlijkeGebieden"
                properties:
                  bestuurlijkeGebieden:
                    type: "array"
                    items:
                      $ref: "#/components/schemas/BestuurlijkGebied"
              _links:
                $ref: "#/components/schemas/CollectieLinks"
      description: "OK."
      headers:
        Content-Crs:
          $ref: "#/components/headers/Content-Crs"
        X-Pagination-Limit:
          $ref: "#/components/headers/X-Pagination-Limit"
        X-Pagination-Page:
          $ref: "#/components/headers/X-Pagination-Page"
  securitySchemes:
    apiKey:
      description: "De API-key die je hebt gekregen dient bij elke request naar de\
        \ BRT API via de `X-Api-Key` request header meegestuurd te worden. Indien\
        \ deze niet juist wordt meegestuurd, of het een ongeldige key betreft, zul\
        \ je de foutmelding `403 Forbidden` terugkrijgen."
      in: "header"
      name: "X-Api-Key"
      type: "apiKey"
  schemas:
    OpenbaarLichaamKort:
      type: "object"
      required:
      - "type"
      - "code"
      - "naam"
      properties:
        type:
          type: "string"
          enum:
          - "Rijk"
          - "Waterschap"
          - "Provincie"
          - "Gemeente"
        code:
          type: "string"
          nullable: true
        naam:
          type: "string"
          nullable: true
    OpenbaarLichaamEmbedded:
      type: "object"
      required:
      - "type"
      - "code"
      - "naam"
      - "_links"
      properties:
        type:
          type: "string"
          enum:
          - "Rijk"
          - "Waterschap"
          - "Provincie"
          - "Gemeente"
        code:
          type: "string"
        naam:
          type: "string"
        _links:
          type: "object"
          required:
          - "self"
          properties:
            self:
              type: "object"
              description: "Absolute link naar dit openbaar lichaam"
              required:
              - "href"
              properties:
                href:
                  type: "string"
                  format: "uri"
                  description: "URL van de link"
                  example: "https://brk.basisregistraties.overheid.nl/api/bestuurlijke-grenzen/v2/openbare-lichamen/GM1234"
    OpenbaarLichaam:
      type: "object"
      allOf:
      - $ref: "#/components/schemas/OpenbaarLichaamKort"
      - type: "object"
        properties:
          bestuurslaag:
            type: "string"
            enum:
            - "rijk"
            - "ministerie"
            - "provincie"
            - "waterschap"
            - "gemeenschappelijke regeling"
            - "gemeente"
          naam:
            type: "string"
          oin:
            type: "string"
            nullable: true
          _embedded:
            type: "object"
            properties:
              territoriaalGebied:
                $ref: "#/components/schemas/BestuurlijkGebiedEmbedded"
      - $ref: "#/components/schemas/OpenbaarLichaamLinks"
    OpenbaarLichaamSelfLinkOnly:
      type: "object"
      required:
      - "_links"
      properties:
        _links:
          type: "object"
          required:
          - "self"
          properties:
            self:
              type: "object"
              description: "Absolute link naar dit openbaar lichaam"
              required:
              - "href"
              properties:
                href:
                  type: "string"
                  format: "uri"
                  description: "URL van de link"
                  example: "https://brk.basisregistraties.overheid.nl/api/bestuurlijke-grenzen/v2/openbare-lichamen/GM1234"
    OpenbaarLichaamLinks:
      type: "object"
      required:
      - "_links"
      properties:
        _links:
          type: "object"
          required:
          - "self"
          - "bestuurlijkeGebieden"
          properties:
            self:
              type: "object"
              description: "Absolute link naar dit openbaar lichaam"
              required:
              - "href"
              properties:
                href:
                  type: "string"
                  format: "uri"
                  description: "URL van de link"
                  example: "https://brk.basisregistraties.overheid.nl/api/bestuurlijke-grenzen/v2/openbare-lichamen/GM1234"
            bestuurlijkeGebieden:
              type: "object"
              description: "Link naar de bestuurlijke gebieden van dit openbaar lichaam"
              required:
              - "href"
              properties:
                href:
                  type: "string"
                  format: "uri"
                  description: "URL van de link"
                  example: "https://brk.basisregistraties.overheid.nl/api/bestuurlijke-grenzen/v2/bestuurlijke-gebieden?openbaarLichaam=GM1234&?geldigOp=2020-07-23"
    BestuurlijkGebiedKort:
      type: "object"
      required:
      - "identificatie"
      - "domein"
      - "type"
      - "geometrie"
      properties:
        identificatie:
          type: "string"
        domein:
          type: "string"
        type:
          type: "string"
          enum:
          - "territoriaal"
          - "territoriaalInclusiefEEZ"
        geometrie:
          $ref: "#/components/schemas/GeoJSONGeometry"
    BestuurlijkGebiedSelfLinkOnly:
      type: "object"
      required:
      - "_links"
      properties:
        _links:
          type: "object"
          required:
          - "self"
          properties:
            self:
              type: "object"
              description: "Absolute link naar deze resource"
              required:
              - "href"
              properties:
                href:
                  type: "string"
                  format: "uri"
                  description: "URL van de link"
                  example: "https://brk.basisregistraties.overheid.nl/api/bestuurlijke-grenzen/v2/bestuurlijke-gebieden/GM12342020010100223100"
    BestuurlijkGebiedEmbedded:
      type: "object"
      nullable: true
      required:
      - "identificatie"
      - "domein"
      - "type"
      - "geometrie"
      - "_links"
      properties:
        identificatie:
          type: "string"
        domein:
          type: "string"
        type:
          type: "string"
          enum:
          - "territoriaal"
          - "territoriaalInclusiefEEZ"
        geometrie:
          $ref: "#/components/schemas/GeoJSONGeometry"
        _links:
          type: "object"
          required:
          - "self"
          properties:
            self:
              type: "object"
              description: "Absolute link naar deze resource"
              required:
              - "href"
              properties:
                href:
                  type: "string"
                  format: "uri"
                  description: "URL van de link"
                  example: "https://brk.basisregistraties.overheid.nl/api/bestuurlijke-grenzen/v2/bestuurlijke-gebieden/GM12342020010100223100"
    BestuurlijkGebied:
      type: "object"
      allOf:
      - $ref: "#/components/schemas/BestuurlijkGebiedKort"
      - type: "object"
        required:
        - "_embedded"
        - "_links"
        properties:
          _embedded:
            type: "object"
            required:
            - "metadata"
            - "openbaarLichaam"
            properties:
              metadata:
                $ref: "#/components/schemas/MetadataResource"
              openbaarLichaam:
                $ref: "#/components/schemas/OpenbaarLichaamEmbedded"
      - $ref: "#/components/schemas/BestuurlijkGebiedSelfLinkOnly"
    MetadataResource:
      type: "object"
      required:
      - "beginGeldigheid"
      properties:
        beginGeldigheid:
          type: "string"
          format: "date"
          nullable: true
        eindGeldigheid:
          type: "string"
          format: "date"
          nullable: true
    CollectieLinks:
      type: "object"
      additionalProperties: false
      required:
      - "self"
      properties:
        next:
          description: "Absolute link naar volgende pagina ('null' als er geen volgende\
            \ pagina is)"
          properties:
            href:
              description: "URL van de link"
              example: "https://internationaal.ondernemen.overheid.nl/api/v1/landen?page=3"
              format: "uri"
              type: "string"
          required:
          - "href"
          type: "object"
        prev:
          description: "Absolute link naar vorige pagina ('null' als er geen vorige\
            \ pagina is)"
          properties:
            href:
              description: "URL van de link"
              example: "https://internationaal.ondernemen.overheid.nl/api/v1/landen?page=1"
              format: "uri"
              type: "string"
              nullable: true
          required:
          - "href"
          type: "object"
        self:
          description: "Absolute link naar huidige pagina"
          properties:
            href:
              description: "URL van de link"
              example: "https://internationaal.ondernemen.overheid.nl/api/v1/landen?page=2"
              format: "uri"
              type: "string"
          required:
          - "href"
          type: "object"
    Error:
      description: "Object gespecificeerd volgens https://tools.ietf.org/html/rfc7807."
      properties:
        detail:
          example: "HTTP 404 Not Found"
          type: "string"
        instance:
          example: "self"
          type: "string"
        status:
          example: 404
          format: "int32"
          type: "integer"
        title:
          example: "Not Found"
          type: "string"
        type:
          description: "URI naar een pagina met meer informatie over deze foutmelding\
            \ voor de ontwikkelaar."
          example: "about:blank"
          type: "string"
      required:
      - "title"
      - "status"
      - "detail"
      type: "object"
    ExtendedError:
      description: "Object gespecificeerd volgens https://tools.ietf.org/html/rfc7807."
      properties:
        detail:
          example: "Request parameters didn't validate."
          type: "string"
        instance:
          example: "self"
          type: "string"
        invalidParams:
          items:
            properties:
              name:
                example: "validation.request.parameter.enum.invalid"
                type: "string"
              reason:
                example: "Value 'epsg:dummy' for parameter 'Accept-Crs' is not allowed.\
                  \ Allowed values are <[epsg:4258, epsg:28992]>."
                type: "string"
            required:
            - "name"
            - "reason"
            type: "object"
          type: "array"
        status:
          example: 400
          format: "int32"
          type: "integer"
        title:
          example: "Bad Request"
          type: "string"
        type:
          description: "URI naar een pagina met meer informatie over deze foutmelding\
            \ voor de ontwikkelaar."
          example: "about:blank"
          type: "string"
      required:
      - "title"
      - "status"
      - "detail"
      - "invalidParams"
      type: "object"
    Intersects:
      type: "object"
      description: "'overlapt' en 'raakt' vallen hieronder"
      properties:
        intersects:
          $ref: "#/components/schemas/GeoJSONGeometry"
    Contains:
      type: "object"
      description: "Omsluit volledig"
      properties:
        contains:
          $ref: "#/components/schemas/GeoJSONGeometry"
    Within:
      type: "object"
      description: "Valt volledig binnen"
      properties:
        within:
          $ref: "#/components/schemas/GeoJSONGeometry"
    GeoJSONGeometry:
      title: "GeoJSONGeometry"
      type: "object"
      discriminator:
        propertyName: "type"
      oneOf:
      - $ref: "#/components/schemas/Point"
      - $ref: "#/components/schemas/MultiPoint"
      - $ref: "#/components/schemas/LineString"
      - $ref: "#/components/schemas/MultiLineString"
      - $ref: "#/components/schemas/Polygon"
      allOf:
      - $ref: "#/components/schemas/MultiPolygon"
    Geometry:
      title: "Geometry"
      description: "GeoJSON geometry"
      required:
      - "type"
      type: "object"
      properties:
        type:
          description: "The geometry type"
          type: "string"
          enum:
          - "Point"
          - "MultiPoint"
          - "LineString"
          - "MultiLineString"
          - "Polygon"
          - "MultiPolygon"
          - "Feature"
          - "FeatureCollection"
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1"
    Point2D:
      title: "Point2D"
      description: "A 2D point"
      type: "array"
      items:
        type: "number"
      maxItems: 2
      minItems: 2
    Point:
      description: "GeoJSON point geometry"
      type: "object"
      allOf:
      - $ref: "#/components/schemas/Geometry"
      - required:
        - "coordinates"
        type: "object"
        properties:
          coordinates:
            $ref: "#/components/schemas/Point2D"
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1.2"
    MultiPoint:
      description: "GeoJSON multi-point geometry"
      type: "object"
      allOf:
      - $ref: "#/components/schemas/Geometry"
      - required:
        - "coordinates"
        type: "object"
        properties:
          coordinates:
            type: "array"
            items:
              $ref: "#/components/schemas/Point2D"
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1.3"
    LineString:
      description: "GeoJSON line-string geometry"
      type: "object"
      allOf:
      - $ref: "#/components/schemas/Geometry"
      - required:
        - "coordinates"
        type: "object"
        properties:
          coordinates:
            type: "array"
            items:
              $ref: "#/components/schemas/Point2D"
            minItems: 2
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1.4"
    MultiLineString:
      description: "GeoJSON multi-line-string geometry"
      type: "object"
      allOf:
      - $ref: "#/components/schemas/Geometry"
      - required:
        - "coordinates"
        type: "object"
        properties:
          coordinates:
            type: "array"
            items:
              type: "array"
              items:
                $ref: "#/components/schemas/Point2D"
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1.5"
    Polygon:
      description: "GeoJSON polygon geometry"
      type: "object"
      allOf:
      - $ref: "#/components/schemas/Geometry"
      - required:
        - "coordinates"
        type: "object"
        properties:
          coordinates:
            type: "array"
            items:
              type: "array"
              items:
                $ref: "#/components/schemas/Point2D"
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1.6"
    MultiPolygon:
      description: "GeoJSON multi-polygon geometry"
      type: "object"
      allOf:
      - $ref: "#/components/schemas/Geometry"
      - required:
        - "coordinates"
        type: "object"
        properties:
          coordinates:
            type: "array"
            items:
              type: "array"
              items:
                type: "array"
                items:
                  $ref: "#/components/schemas/Point2D"
      externalDocs:
        url: "https://tools.ietf.org/html/rfc7946#section-3.1.7"
    AppInfo:
      type: "object"
      description: "Technische applicatie-metadata"
      properties:
        name:
          type: "string"
          description: "Applicatienaam"
        version:
          type: "string"
          description: "Applicatieversie"
        buildTime:
          type: "string"
          format: "date-time"
          description: "Buildtijdstip"
      required:
      - "name"
      - "version"
    HealthInfo:
      type: "object"
      description: "health info status"
      properties:
        healthStatus:
          type: "string"
          enum:
          - "UP"
          - "DOWN"
security:
- apiKey: []
