openapi: 3.0.1
info:
  title: ClaimsAPI
  version: '1.0'
servers:
  - url: https://services.acc.api.htm.nl/chipkaart/1.0
security:
  - default: []
tags:
  - name: Claims
paths:
  /claims:
    post:
      tags:
        - Claims
      summary: Create a claim
      description: >
        Create a claim by sending a JSON as specified in the schema. By
        specifying the chipcardnumber under 'chipkaart',

        a claim for OV chipcard will be send to the OVC API. If no
        chipcardnumber is specified under 'chipkaart', a claim for EMV is send
        to mendix.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/claimsEntity'
            examples:
              OVCK:
                value:
                  aankomsthalte: '1'
                  instapdatum: '2024-03-06T15:20:44.549Z'
                  instaptijd: '2024-03-06T15:20:44.549Z'
                  ingecheckt: true
                  uitgecheckt: true
                  chipkaart: '1234123412341234'
                  afgeschrevenbedrag: 0
                  vertrekhalte: string
                  korting: true
                  iban: '1234123412341234'
                  naam: string
                  emailadres: user@example.com
                  uitstaptijd: '2024-03-06T15:20:44.549Z'
                  verwachtbedrag: 0
                  toelichting: string
                  lijn: '1'
                  vervoertype: '1'
                  serviceRefId: '1'
                  Totaalbedrag: 0
              EMV:
                value:
                  aankomsthalte: '1'
                  instapdatum: '2024-03-06T15:20:44.549Z'
                  instaptijd: '2024-03-06T15:20:44.549Z'
                  ingecheckt: true
                  uitgecheckt: true
                  afgeschrevenbedrag: 0
                  vertrekhalte: string
                  korting: true
                  iban: '1234123412341234'
                  naam: string
                  emailadres: user@example.com
                  uitstaptijd: '2024-03-06T15:20:44.549Z'
                  verwachtbedrag: 0
                  toelichting: string
                  lijn: '1'
                  vervoertype: '1'
                  serviceRefId: '1'
                  Totaalbedrag: 0
      responses:
        '200':
          description: ok
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /refunds:
    post:
      tags:
        - Claims
      summary: Create a refund request
      description: Create a refund request by sending a JSON as specified in the schema. Either a serviceReferenceId or ovPasNumber should be present in order to fulfill the refund request.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/refundsEntity'
            examples:
              EMV:
                value:
                  emailAddress: 'j.beek@htm.nl'
                  orderNumber: 'ORD1000046'
                  serviceReferenceId: 'NLOVA5BCD124H3Z21X'
                  amount: 2305
                  iban: 'NL98INGB0003856625'
                  orderDate: '2025-01-13'
                  productName: 'HTM 20% korting'
              OVpas:
                value:
                  emailAddress: 'j.beek@htm.nl'
                  orderNumber: 'ORD1000046'
                  ovpasNumber: '63AW974'
                  iban: 'NL98INGB0003856625'
                  orderDate: '2025-01-13'
                  productName: 'HTM 20% korting'
      responses:
        '201':
          description: Created
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
components:
  schemas:
    claimsEntity:
      required:
        - Totaalbedrag
        - aankomsthalte
        - afgeschrevenbedrag
        - emailadres
        - instapdatum
        - instaptijd
        - korting
        - lijn
        - serviceRefId
        - toelichting
        - uitgecheckt
        - vertrekhalte
        - vervoertype
        - verwachtbedrag
      type: object
      properties:
        aankomsthalte:
          type: string
        instapdatum:
          type: string
          format: date-time
        instaptijd:
          type: string
          format: date-time
        ingecheckt:
          type: boolean
        uitgecheckt:
          type: boolean
        chipkaart:
          type: string
        afgeschrevenbedrag:
          type: number
          format: float
        vertrekhalte:
          type: string
        korting:
          type: boolean
        iban:
          type: string
          description: String of length between 15 en 32 characters
          example: '1234123412341234'
        naam:
          type: string
        emailadres:
          type: string
          format: email
        uitstaptijd:
          type: string
          format: date-time
        verwachtbedrag:
          type: number
          format: float
        toelichting:
          type: string
        lijn:
          type: string
        vervoertype:
          type: string
        serviceRefId:
          type: string
        Totaalbedrag:
          type: number
          format: float
    refundsEntity:
      required:
          - emailAddress
          - iban
      type: object
      properties:
        emailAddress:
          type: string
          format: email
          example: j.beek@htm.nl
        orderNumber:
          type: string
          example: ORD1000046
        serviceReferenceId:
          type: string
          example: NLOVA5BCD124H3Z21X
        amount:
          type: integer
          example: 12305
        ovpasNumber:
          type: string
          example: 63AW974
        iban:
          type: string
          example: NL00RABO000001337
        orderDate:
          type: string
          format: date
          example: 2025-01-13
        productName:
          type: string
          example: HTM 20% korting
    401Response:
      type: object
      properties:
        code:
          type: string
          example: '900901'
        type:
          type: string
        message:
          type: string
          example: Invalid Credentials
        description:
          type: string
          example: >-
            Invalid Credentials. Make sure you have provided the correct
            security credentials
    500Response:
      type: object
      properties:
        error:
          type: string
          example: error while connecting to backend
  securitySchemes:
    default:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://services.acc.api.htm.nl/authorize
          scopes: {}
