openapi: 3.0.1
info:
  title: ABT Service Engine Order APIs
  version: "1.0"
  description: Order APIs available in the Service Engine for order validation and fulfillment.
servers:
  - url: https://api.integratielaag.nl/abt/abtserviceengine/1.0
paths:
  /orders/validation/gboAgeProfile:
    get:
      tags:
        - ServiceEngine Order validation
      summary: Get GBO age profile that is valid for the given input
      description: |-
        Only one age profile can be valid at any one time, so only one profile is returned.
      parameters:
        - name: productStartDate
          in: query
          required: true
          description: Start date of product validity
          schema:
            type: string
            format: date
            example: 2025-03-20
        - name: birthDate
          in: query
          required: false
          description: Birthdate of the OVpay-token holder
          schema:
            type: string
            format: date
            example: 2000-01-01
        - name: ovPayTokenId
          in: query
          required: false
          description: ovPayTokenId of the customer's selected token
          schema:
            type: integer
            example: 1
        - name: customerTokenId
          in: query
          required: false
          description: customerTokenId of the customer's selected token
          schema:
            type: string
            format: uuid
            example: "4a2d2c9c-1e5d-4d8a-9c0a-6c0a6c0a6c0a"
        - name: serviceReferenceId
          in: query
          required: false
          description: serviceReferenceId of the customer's selected token
          schema:
            type: string
            example: "NLOV1234567ABCDEFG"
        - name: amount
          in: query
          required: false
          description: amount belonging to the serviceReferenceId
          schema:
            type: integer
            example: 100
        - name: ovpasNumber
          in: query
          required: false
          description: OVpas number of the customer's selected token
          schema:
            type: string
            example: "63AW974"
        - name: verificationCode
          in: query
          required: false
          description: verification code belonging to the OVpas number
          schema:
            type: string
            example: 1A3C7D        
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GboAgeProfileResponse"

        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rfc9457Response"
              examples:
                Missing parameter(s):
                  summary: Missing parameter(s)
                  value:
                    {
                      "type": "https://www.htm.nl/api/v1/400Error",
                      "title": "Missing parameter(s)",
                      "detail": "At least one of the following parameters must be present: birthDate, ovPayTokenId, customerTokenId, (serviceReferenceId and amount), (ovpasNumber and verificationCode)",
                      "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
                      "apiErrorCode": "htm.api.err.400.2",
                    }
                Invalid date format:
                  summary: Invalid date format
                  value:
                    {
                      "type": "https://www.htm.nl/api/v1/400Error",
                      "title": "Invalid input",
                      "detail": "The given birthDate is not a valid Date format",
                      "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
                      "apiErrorCode": "htm.api.err.400.3",
                    }
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rfc9457Response"
              examples:
                No birthdate present in PAD of OVpay token:
                  summary: No birthdate present in PAD of OVpay token
                  value:
                    {
                      "type": "https://www.htm.nl/api/v1/404Error",
                      "title": "Missing birthdate in PAD",
                      "detail": "There is no birthdate present in the PAD of the OVpay token, or there is no PAD present at all",
                      "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
                      "apiErrorCode": "htm.api.err.404.1",
                    }
components:
  schemas:
    GboAgeProfileResponse:
      type: object
      required:
        - gboAgeProfileId
        - name
        - ageFromInclusive
        - ageToInclusive
      properties:
        gboAgeProfileId:
          type: integer
          example: 1
        name:
          type: string
          example: Kind (4 t/m 11 jaar)
        ageFromInclusive:
          type: integer
          example: 4
        ageToInclusive:
          type: integer
          example: 11
    rfc9457Response:
      type: object
      properties:
        type:
          type: string
          format: url
          example: "https://www.htm.nl/api/v1/rfc9457Error"
        title:
          type: string
          description: "Short summary of the error."
          example: "The request is not valid."
        detail:
          type: string
          description: "More detailed descriptionof the error."
          example: "Some required parameters are missing."
        instance:
          type: string
          description: "Unique identifier to correlate this specific error with logging in other applications."
          example: "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c"
        additionalProperty1:
          type: string
          description: "Example of an additional property value to be used for error reporting."
          example: "additionalValue1"
        additionalProperty2:
          type: array
          description: "Example of an additional property array to be used for error reporting."
          items:
            type: string
            example:
              - "additionalValue2-1"
              - "additionalValue2-2"
