openapi: 3.1.0
components:
  schemas:
    Area:
      type: object
      properties:
        enclosingCircle:
          type: object
          properties:
            center:
              type: object
              properties:
                lat:
                  type: number
                lon:
                  type: number
            radius:
              type: number
        boundingBox:
          type: object
          properties:
            lowerCorner:
              type: object
              properties:
                lat:
                  type: number
                lon:
                  type: number
            upperCorner:
              type: object
              properties:
                lat:
                  type: number
                lon:
                  type: number
    Circle:
      type: object
      properties:
        center:
          type: object
          properties:
            lat:
              type: number
            lon:
              type: number
        radius:
          type: number
    DatePeriod:
      type: object
      properties:
        beginDate:
          type: string
        endDate:
          type: string
    Envelope:
      type: object
      properties:
        lowerCorner:
          type: object
          properties:
            lat:
              type: number
            lon:
              type: number
        upperCorner:
          type: object
          properties:
            lat:
              type: number
            lon:
              type: number
    GmwCriteriaSet:
      type: object
      required:
        - area
      properties:
        deliveryAccountableParty:
          type: string
        qualityRegime:
          type: string
          enum:
            - IMBRO
            - IMBRO_A
        registrationPeriod:
          type: object
          properties:
            beginDate:
              type: string
            endDate:
              type: string
        correctionPeriod:
          type: object
          properties:
            beginDate:
              type: string
            endDate:
              type: string
        underReview:
          type: string
          enum:
            - JA
            - NEE
        area:
          type: object
          properties:
            enclosingCircle:
              type: object
              properties:
                center:
                  type: object
                  properties:
                    lat:
                      type: number
                    lon:
                      type: number
                radius:
                  type: number
            boundingBox:
              type: object
              properties:
                lowerCorner:
                  type: object
                  properties:
                    lat:
                      type: number
                    lon:
                      type: number
                upperCorner:
                  type: object
                  properties:
                    lat:
                      type: number
                    lon:
                      type: number
        withPrehistory:
          type: string
          enum:
            - JA
            - NEE
        owner:
          type: string
        constructionStandard:
          type: string
        constructionPeriod:
          type: object
          properties:
            beginDate:
              type: string
            endDate:
              type: string
        removalPeriod:
          type: object
          properties:
            beginDate:
              type: string
            endDate:
              type: string
        removed:
          type: string
          enum:
            - JA
            - NEE
        tubeStatus:
          type: string
        screenPositionRange:
          type: object
          properties:
            startDepth:
              type: number
            endDepth:
              type: number
        initialFunction:
          type: string
        minimumNumberOfTubes:
          type: integer
          format: int32
        geoOhmCablePresent:
          type: string
          enum:
            - JA
            - NEE
        wellHeadProtector:
          type: string
        minimumTubeTopDiameter:
          type: number
        maximumTubeTopDiameter:
          type: number
    Point:
      type: object
      properties:
        lat:
          type: number
        lon:
          type: number
    QualityRegime:
      type: string
      enum:
        - IMBRO
        - IMBRO_A
    ServiceError:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
        errorCode:
          type: integer
          format: int32
    VerticalPositionRange:
      type: object
      properties:
        startDepth:
          type: number
        endDepth:
          type: number
    YesNoEnumeration:
      type: string
      enum:
        - JA
        - NEE
  examples:
    SIMPLE_CRITERIA:
      value: |-
        {
          "registrationPeriod": {
            "beginDate": "2017-01-06",
            "endDate": "2021-01-06"
          },
          "area": {
            "enclosingCircle": {
              "center": {
                "lat": 52.038297852,
                "lon": 5.31447958948
              },
              "radius": 0.5
            }
          }
        }
paths:
  /gm/gmw/v1/bro-ids:
    get:
      summary: Lijst van GMW BRO-IDs
      description: Haalt de lijst van GMW bro-ids op waarvoor [bronhouder](https://basisregistratieondergrond.nl/service-contact/formulieren/aangemeld-bro/) verantwoordelijk is.
      operationId: bro-ids
      parameters:
        - description: Het kvk (kamer van koophandel) nummer van een GMW bronhouder
          example: '12345678'
          name: bronhouder
          in: query
          schema:
            type: string
          required: true
        - description: Registered is een optionele parameter, bij afwezigheid geeft deze methode alle GMW BRO-IDs terug onafhankelijk of die wel/niet uit registratie zijn genomen. <BR>registered = ja geeft alleen BRO-IDs terug die in registratie zijn genomen. <BR>registered = nee geeft alleen BRO-IDs terug die uit registratie zijn genomen.
          name: registered
          in: query
          schema:
            type: string
      responses:
        '200':
          description: De Lijst van GMW BRO-IDs voor dit registratie object type waarvoor bronhouder verantwoordelijk is.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/json: {}
        '400':
          description: Er bevinden zich andere fouten in het GMW verzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  description:
                    type: string
                  errorCode:
                    type: integer
                    format: int32
  /gm/gmw/v1/characteristics/searches:
    post:
      summary: Haalt de karakteristieken op van een set van registratie objecten, gegeven een kenmerkenverzameling (kenset).
      description: De karakteristieken geven een samenvatting van een object zodat een verdere selectie gemaakt kan worden. Het past in een tweetrapsbenadering, waarbij de eerste stap bestaat uit het ophalen van de karakteristieken en de 2e stap uit het ophalen van de gewenste registratie objecten. Het resultaat van deze operatie is gemaximaliseerd op 2000. Zie [hier](https://www.bro-productomgeving.nl/bpo/latest/grondwatermonitoring/grondwatermonitoringput-gmw/koppelvlakbeschrijving-uitgifteservice-gmw) en [hier](https://www.bro-productomgeving.nl/bpo/latest/grondwatermonitoring/grondwatermonitoringput-gmw/uitgiftehandboek-gmw) voor meer info.
      operationId: characteristics
      parameters:
        - description: Een optionele GMW referentie van de gebruiker. "-" wordt aangenomen bij afwezigheid.
          example: Mijn-putcode-aanvraag-000001
          name: requestReference
          in: query
          schema:
            type: string
      requestBody:
        description: 'De set van kenmerken. Zie voor meer informatie: https://www.bro-productomgeving.nl/bpo/latest/grondwatermonitoring/grondwatermonitoringput-gmw'
        content:
          application/json:
            examples:
              Simple Criteria:
                value: |-
                  {
                    "registrationPeriod": {
                      "beginDate": "2017-01-06",
                      "endDate": "2021-01-06"
                    },
                    "area": {
                      "enclosingCircle": {
                        "center": {
                          "lat": 52.038297852,
                          "lon": 5.31447958948
                        },
                        "radius": 0.5
                      }
                    }
                  }
            schema:
              type: object
              required:
                - area
              properties:
                deliveryAccountableParty:
                  type: string
                qualityRegime:
                  type: string
                  enum:
                    - IMBRO
                    - IMBRO_A
                registrationPeriod:
                  type: object
                  properties:
                    beginDate:
                      type: string
                    endDate:
                      type: string
                correctionPeriod:
                  type: object
                  properties:
                    beginDate:
                      type: string
                    endDate:
                      type: string
                underReview:
                  type: string
                  enum:
                    - JA
                    - NEE
                area:
                  type: object
                  properties:
                    enclosingCircle:
                      type: object
                      properties:
                        center:
                          type: object
                          properties:
                            lat:
                              type: number
                            lon:
                              type: number
                        radius:
                          type: number
                    boundingBox:
                      type: object
                      properties:
                        lowerCorner:
                          type: object
                          properties:
                            lat:
                              type: number
                            lon:
                              type: number
                        upperCorner:
                          type: object
                          properties:
                            lat:
                              type: number
                            lon:
                              type: number
                withPrehistory:
                  type: string
                  enum:
                    - JA
                    - NEE
                owner:
                  type: string
                constructionStandard:
                  type: string
                constructionPeriod:
                  type: object
                  properties:
                    beginDate:
                      type: string
                    endDate:
                      type: string
                removalPeriod:
                  type: object
                  properties:
                    beginDate:
                      type: string
                    endDate:
                      type: string
                removed:
                  type: string
                  enum:
                    - JA
                    - NEE
                tubeStatus:
                  type: string
                screenPositionRange:
                  type: object
                  properties:
                    startDepth:
                      type: number
                    endDepth:
                      type: number
                initialFunction:
                  type: string
                minimumNumberOfTubes:
                  type: integer
                  format: int32
                geoOhmCablePresent:
                  type: string
                  enum:
                    - JA
                    - NEE
                wellHeadProtector:
                  type: string
                minimumTubeTopDiameter:
                  type: number
                maximumTubeTopDiameter:
                  type: number
        required: true
      responses:
        '200':
          description: De set van GMW karakteristieken die matched met de criteria dan wel een afwijzing.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/xml: {}
        '400':
          description: Er bevinden zich andere fouten in het GMW verzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  description:
                    type: string
                  errorCode:
                    type: integer
                    format: int32
  /gm/gmw/v1/groundlevelposition-as-csv/{broId}:
    get:
      summary: Geeft een tabel met als eerste kolom datum (unix epoch of datum) en als tweede kolom de maaiveldpositie. Bedoeld voor bijvoorbeeld het grafisch weergeven van waterstanden ten opzichte van het maaiveld.
      operationId: groundLevelPositionAsCSV
      parameters:
        - content:
            text/plain:
              schema:
                type: string
                pattern: \S
          description: Het BRO-ID van het GMW object.
          name: broId
          in: path
          required: true
        - description: |-
            type rapportage; 
            + compact: Compact met datums als leesbare aanduidingen, 
            + compact_met_timestamps: Compact met datums als unix epoch tijdstippen. Afwezigheid van deze parameter geeft datums weer met leesbare aanduidingen.
          example: compact
          name: rapportagetype
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Het aangevraagde registratie object dan wel een afwijzing van het GMW verzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            text/plain: {}
        '400':
          description: Er bevinden zich andere fouten in het GMW verzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  description:
                    type: string
                  errorCode:
                    type: integer
                    format: int32
  /gm/gmw/v1/objects/{broId}:
    get:
      summary: Haalt een put (groundwater monitoring well, GMW) op op basis van een BRO-ID
      description: Haal een put op op basis van een BRO-ID. De operatie retourneert een object op basis van het BRO-ID als een 'O' (actuele situatie), 'PPO' (inrichting put en volledige historie) of 'DO' (uit registratie) als IMBRO XML. De andere varianten 'O-DP' of 'PPO-DP' zijn niet ondersteund omdat hier authenticatie / autorisatie voor nodig is (er worden bronhouder gevoelige gegevens terug gegeven). Gebruik hiervoor de 'DigiKoppeling' webservice.Zie [hier](https://www.bro-productomgeving.nl/bpo/latest/grondwatermonitoring/grondwatermonitoringput-gmw/koppelvlakbeschrijving-uitgifteservice-gmw) en [hier](https://www.bro-productomgeving.nl/bpo/latest/grondwatermonitoring/grondwatermonitoringput-gmw/uitgiftehandboek-gmw) voor meer info.
      operationId: objects
      parameters:
        - content:
            text/plain:
              schema:
                type: string
          description: Het BRO-ID van het GMW object.
          name: broId
          in: path
          required: true
        - description: Een optionele GMW referentie van de gebruiker. "-" wordt aangenomen bij afwezigheid.
          example: Mijn-GMW-object-aanvraag-000001
          name: requestReference
          in: query
          schema:
            type: string
        - allowEmptyValue: true
          description: Aanwezigheid van deze parameter geeft de put bij inrichting + de volledige geschiedenis terug. Afwezigheid de actuele situatie.
          example: ja
          name: fullHistory
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Het aangevraagde registratie object dan wel een afwijzing van het ophaalverzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/xml: {}
        '400':
          description: Er bevinden zich andere fouten in het GMW verzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  description:
                    type: string
                  errorCode:
                    type: integer
                    format: int32
  /gm/gmw/v1/well-code/{broId}:
    get:
      summary: Haalt een putcode op, op basis van een BRO-ID.
      description: Haalt een putcode op, op basis van een BRO-ID. Retourneert de putcode als 'plain text'
      operationId: well-code
      parameters:
        - content:
            text/plain:
              schema:
                type: string
          description: Het BRO-ID van het GMW object.
          name: broId
          in: path
          required: true
        - description: Een optionele GMW referentie van de gebruiker. "-" wordt aangenomen bij afwezigheid.
          example: Mijn-putcode-aanvraag-000001
          name: requestReference
          in: query
          schema:
            type: string
      responses:
        '200':
          description: De putcode.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            text/plain: {}
        '400':
          description: Er bevinden zich andere fouten in het GMW verzoek.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  description:
                    type: string
                  errorCode:
                    type: integer
                    format: int32
        '404':
          description: De putcode is niet gevonden.
          headers:
            API-Version:
              description: Versie van deze GMW API
              schema:
                type: string
                examples:
                  - 3.2.1
info:
  title: Grondwater Monitoring Put (GMW)
  version: 2.197.0
  description: Landelijke Voorziening Basisregistratie Ondergrond (BRO), uitgifte en validatie grondwatermonitoringput (GMW).
  contact:
    name: BRO Servicedesk
    email: support@broservicedesk.nl
    url: https://basisregistratieondergrond.nl/service-contact/
