---
openapi: 3.1.0
components:
  schemas:
    Area:
      type: object
      properties:
        enclosingCircle:
          $ref: "#/components/schemas/Circle"
        boundingBox:
          $ref: "#/components/schemas/Envelope"
    Circle:
      type: object
      properties:
        center:
          $ref: "#/components/schemas/Point"
        radius:
          type: number
    DatePeriod:
      type: object
      properties:
        beginDate:
          type: string
        endDate:
          type: string
    DepthInterval:
      type: object
      properties:
        startDepth:
          type: number
        endDepth:
          type: number
    Envelope:
      type: object
      properties:
        lowerCorner:
          $ref: "#/components/schemas/Point"
        upperCorner:
          $ref: "#/components/schemas/Point"
    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
    SfrCriteriaSet:
      type: object
      required:
      - area
      properties:
        deliveryAccountableParty:
          type: string
        qualityRegime:
          $ref: "#/components/schemas/QualityRegime"
        registrationPeriod:
          $ref: "#/components/schemas/DatePeriod"
        correctionPeriod:
          $ref: "#/components/schemas/DatePeriod"
        underReview:
          $ref: "#/components/schemas/YesNoEnumeration"
        area:
          $ref: "#/components/schemas/Area"
        discipline:
          type: string
        fieldworkPeriod:
          $ref: "#/components/schemas/DatePeriod"
        descriptionReportPeriod:
          $ref: "#/components/schemas/DatePeriod"
        depthInterval:
          $ref: "#/components/schemas/DepthInterval"
        descriptionQuality:
          type: string
        fractionDistributionDetermined:
          $ref: "#/components/schemas/YesNoUnknownEnumeration"
        litterLayerInvestigated:
          $ref: "#/components/schemas/YesNoEnumeration"
        outcropType:
          type: string
        stopCriterion:
          type: string
        pitRefilled:
          $ref: "#/components/schemas/YesNoUnknownEnumeration"
        analysisReportPeriod:
          $ref: "#/components/schemas/DatePeriod"
        analysisType:
          type: string
        characteristicModelled:
          $ref: "#/components/schemas/YesNoEnumeration"
    YesNoEnumeration:
      type: string
      enum:
      - JA
      - NEE
    YesNoUnknownEnumeration:
      type: string
      enum:
      - JA
      - NEE
      - ONBEKEND
  examples:
    SIMPLE_CRITERIA:
      value: |-
        {
          "registrationPeriod": {
            "beginDate": "2017-05-01",
            "endDate": "2021-05-01"
          },
          "area": {
            "enclosingCircle": {
              "center": {
                "lat": 52.038297852,
                "lon": 5.31447958948
              },
              "radius": 0.5
            }
          }
        }
paths:
  /sr/sfr/v2/bro-ids:
    get:
      summary: Lijst van SFR BRO-IDs
      description: "Haalt de lijst van SFR 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 SFR bronhouder
        example: "12345678"
        name: bronhouder
        in: query
        schema:
          type: string
        required: true
      - description: "Registered is een optionele parameter, bij afwezigheid geeft\
          \ deze methode alle SFR 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 SFR BRO-IDs voor dit registratie object type waarvoor
            bronhouder verantwoordelijk is.
          headers:
            API-Version:
              description: Versie van deze SFR API
              schema:
                type: string
                examples:
                - 3.2.1
          content:
            application/json: {}
        "400":
          description: Er bevinden zich andere fouten in het SFR verzoek.
          headers:
            API-Version:
              description: Versie van deze SFR API
              schema:
                type: string
                examples:
                - 3.2.1
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
  /sr/sfr/v2/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 twee-traps-benadering,\
        \ 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/bodem-en-grondonderzoek/wandonderzoek-sfr/berichtencatalogus-uitgiftewebservice-sfr)\
        \ voor meer info."
      operationId: characteristics
      parameters:
      - description: Een optionele SFR referentie van de gebruiker. "-" wordt aangenomen
          bij afwezigheid.
        example: Mijn-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/"
        content:
          application/json:
            examples:
              Simple Criteria:
                $ref: "#/components/examples/SIMPLE_CRITERIA"
            schema:
              $ref: "#/components/schemas/SfrCriteriaSet"
        required: true
      responses:
        "200":
          description: De set van SFR karakteristieken die matched met de criteria
            dan wel een afwijzing.
          headers:
            API-Version:
              description: Versie van deze SFR API
              schema:
                type: string
                examples:
                - 3.2.1
          content:
            application/xml: {}
        "400":
          description: Er bevinden zich andere fouten in het SFR verzoek.
          headers:
            API-Version:
              description: Versie van deze SFR API
              schema:
                type: string
                examples:
                - 3.2.1
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
  /sr/sfr/v2/objects/{broId}:
    get:
      summary: "Haalt een bodemkundig wandonderzoek ( pedological SoilFaceResearch\
        \ survey, SFR) op op basis van een BRO-ID"
      description: "Haal een bodemkundig wandonderzoek op op basis van een BRO-ID.\
        \ De operatie retourneert een object op basis van het BRO-ID als een 'O' (actuele\
        \ situatie), of 'DO' (uit registratie) als IMBRO XML. De andere variant 'O-DP'\
        \ is 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/bodem-en-grondonderzoek/wandonderzoek-sfr/berichtencatalogus-uitgiftewebservice-sfr)\
        \ voor meer info."
      operationId: objects
      parameters:
      - content:
          text/plain:
            schema:
              type: string
        description: Het BRO-ID van het SFR object.
        name: broId
        in: path
        required: true
      - description: Een optionele SFR referentie van de gebruiker. "-" wordt aangenomen
          bij afwezigheid.
        example: Mijn-SFR-object-aanvraag-000001
        name: requestReference
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Het aangevraagde registratie object dan wel een afwijzing van
            het SFR verzoek.
          headers:
            API-Version:
              description: Versie van deze SFR API
              schema:
                type: string
                examples:
                - 3.2.1
          content:
            application/xml: {}
        "400":
          description: Er bevinden zich andere fouten in het SFR verzoek.
          headers:
            API-Version:
              description: Versie van deze SFR API
              schema:
                type: string
                examples:
                - 3.2.1
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
info:
  title: Wandonderzoek (SFR)
  version: 2.192.1
  description: "Landelijke Voorziening Basisregistratie Ondergrond (BRO), uitgifte\
    \ en validatie wandonderzoek (SFR)."
  contact:
    name: BRO Servicedesk
    email: support@broservicedesk.nl
    url: https://basisregistratieondergrond.nl/service-contact/
