openapi: 3.0.1
info:
  title: ABT Customer Self Service APIs
  version: '1.0'
servers:
  - url: https://services.acc.api.htm.nl/abt/abtcustomers/1.0
security:
  - default: []
paths:
  /customers/tokens/{ovpayTokenId}/trips:
    get:
      tags:
        - Trips
      summary: Get trips for a token in profile
      description: >-
        Get the most recent trips for a given token ID, as long as this token is
        bound to the profile (as derived from sub in given JWT)
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: ovpayTokenId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: xpto
          in: query
          required: false
          schema:
            type: boolean
            default: false
            example: false
          description: >-
            Determines whether also trips from other PTOs will be returned.
        - name: dateTimeFrom
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: dateTimeUntil
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: organisationId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: transportType
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: lineId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: paymentMethod
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: productTemplateId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: category
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: tripStatus
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: tripId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: showSuperseedingTrips
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: organisationName
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: limit
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: integer
        - name: offset
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: integer
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getTokenTrips'
              examples:
                emptyResponse:
                  summary: No trips found for a token
                  value: []
                multipleTripsResponse:
                  summary: Multiple trips found for a token
                  value:
                    - tripId: 66538
                      tripVersion: 2
                      transportType: RAIL
                      lineId: "10"
                      tripStatus: COMPLETE
                      fare: 2470
                      currency: EUR
                      lastUpdatedTripDateTime: 2021-06-01T06:22:00Z
                      checkinTransactionTimestamp: 2021-06-01T06:00:00Z
                      checkoutTransactionTimestamp: 2021-06-01T06:22:00Z
                      checkinLocation:
                        stopId: 621
                        stopName:
                          items:
                            - key: nl-NL
                              value: Utrecht Centraal
                            - key: en-US
                              value: Utrecht Centraal
                        stopDesc: Station Utrecht Centraal
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      checkoutLocation:
                        stopId: 253
                        stopName:
                          items:
                            - key: nl-NL
                              value: Goes
                            - key: en-US
                              value: Goes
                        stopDesc: Station Goes
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      loyaltyOrDiscount: false
                      _links:
                        tripDetails:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/66538?ovPayTokenId=42
                          method: GET
                          templated: false
                    - tripId: 66539
                      tripVersion: 1
                      transportType: BUS
                      lineId: "20"
                      tripStatus: MISSING_CKO
                      fare: 1230
                      currency: EUR
                      lastUpdatedTripDateTime: 2021-06-01T07:00:00Z
                      checkinTransactionTimestamp: 2021-06-01T06:30:00Z
                      checkoutTransactionTimestamp: null
                      checkinLocation:
                        stopId: 622
                        stopName:
                          items:
                            - key: nl-NL
                              value: Amsterdam Centraal
                            - key: en-US
                              value: Amsterdam Centraal
                        stopDesc: Station Amsterdam Centraal
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      checkoutLocation: null
                      loyaltyOrDiscount: true
                      _links:
                        tripDetails:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/66539?ovPayTokenId=42
                          method: GET
                          templated: false
                        getStopsForCorrection:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/stops?xbot=36637b86-7a31-4b77-99dd-2d39b9c1a9b6&tripId=66539
                          method: GET
                          templated: false
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403Response'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /customers/tokens/trips:
    get:
      tags:
        - Trips
      summary: Get trips for an anonymous token
      description: >-
        Get the most recent trips for a given token type and value (i.e. SRID and amount or OVpasnumber).
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: tokenType
          in: query
          required: true
          description: >-
            A tokenType IS AN enumerated identifier THAT describes the type of
            Token that will be used as an input for the translation.
          schema:
            type: string
            enum:
              - srfid
              - passnumber
        - name: tokenValue
          in: query
          required: true
          description: >-
            A tokenValue IS A string THAT defines the value of the specified
            tokenType.
          examples:
            srfid:
              value: P485Q6M797J9LW
              summary: srfid
            passnumber:
              value: 424HJGF
              summary: passNumber
          schema:
            type: string
        - name: validatorType
          in: query
          required: true
          description: >-
            A validatorType IS A string THAT defines the type of the attribute
            that is needed to verify the authenticity of the request.


            Options:

            - **verificationCode**: A validator containing, 4 characters long,
            which can be found on a CLT-card

            - **amount**: Amount on the bank statement (in cents) 
          example: verificationcode
          schema:
            type: string
            enum:
              - verificationcode
              - amount
        - name: validatorInput
          in: query
          required: true
          description: >-
            A validatorInput IS A string THAT defines the value of the specified
            validatorType.
          examples:
            verificationcode:
              value: 6RS9
              summary: verificationcode
            amount:
              value: '1021'
              summary: amount
          schema:
            type: string
        - name: xpto
          in: query
          required: false
          schema:
            type: boolean
            default: false
            example: false
          description: >-
            Determines whether also trips from other PTOs will be returned.
        - name: dateTimeFrom
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: dateTimeUntil
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: organisationId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: transportType
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: lineId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: paymentMethod
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: productTemplateId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: category
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: tripStatus
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: tripId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: showSuperseedingTrips
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: organisationName
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: limit
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: integer
        - name: offset
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: integer
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getTokenTrips'
              examples:
                emptyResponse:
                  summary: No trips found for a token
                  value: []
                multipleTripsResponse:
                  summary: Multiple trips found for a token
                  value:
                    - tripId: 66538
                      tripVersion: 2
                      transportType: RAIL
                      lineId: "10"
                      tripStatus: COMPLETE
                      fare: 2470
                      currency: EUR
                      lastUpdatedTripDateTime: 2021-06-01T06:22:00Z
                      checkinTransactionTimestamp: 2021-06-01T06:00:00Z
                      checkoutTransactionTimestamp: 2021-06-01T06:22:00Z
                      checkinLocation:
                        stopId: 621
                        stopName:
                          items:
                            - key: nl-NL
                              value: Utrecht Centraal
                            - key: en-US
                              value: Utrecht Centraal
                        stopDesc: Station Utrecht Centraal
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      checkoutLocation:
                        stopId: 253
                        stopName:
                          items:
                            - key: nl-NL
                              value: Goes
                            - key: en-US
                              value: Goes
                        stopDesc: Station Goes
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      loyaltyOrDiscount: false
                      _links:
                        tripDetails:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/66538?xbot=36637b86-7a31-4b77-99dd-2d39b9c1a9b6
                          method: GET
                          templated: false
                    - tripId: 66539
                      tripVersion: 1
                      transportType: BUS
                      lineId: "20"
                      tripStatus: MISSING_CKO
                      fare: 1230
                      currency: EUR
                      lastUpdatedTripDateTime: 2021-06-01T07:00:00Z
                      checkinTransactionTimestamp: 2021-06-01T06:30:00Z
                      checkoutTransactionTimestamp: null
                      checkinLocation:
                        stopId: 622
                        stopName:
                          items:
                            - key: nl-NL
                              value: Amsterdam Centraal
                            - key: en-US
                              value: Amsterdam Centraal
                        stopDesc: Station Amsterdam Centraal
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      checkoutLocation: null
                      loyaltyOrDiscount: true
                      _links:
                        tripDetails:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/66539?xbot=36637b86-7a31-4b77-99dd-2d39b9c1a9b6
                          method: GET
                          templated: false
                        getStopsForCorrection:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/stops?xbot=36637b86-7a31-4b77-99dd-2d39b9c1a9b6&tripId=66539
                          method: GET
                          templated: false
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403Response'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /customers/trips/{tripId}:
    get:
      tags:
        - Trips
      summary: Get trips details for a trip and token
      description: >-
        Get the trip details for a given trip and token ID (for tokens that are bound to a customer account), 
        or xbot (for anonymous tokens), as long as the trip belongs to the token.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: tripId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovPayTokenId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: integer
        - name: xbot
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getTrips'
              examples:
                  completedTripDetails:
                    summary: Example of a completed trip
                    value:                
                      tripId: 66538
                      tripVersion: 2
                      tripStatus: COMPLETE
                      tripFareNature: FIXED
                      paymentMethodId: dba0b896-118d-4e9e-abf5-af264ced34c4
                      paymentMethodMode: BAL
                      paymentMethodName: BAL
                      paymentProviderName: Account Balance
                      paymentProviderBusinessEntityId: "4"
                      paymentProviderCommercialName: VAD Flex
                      paymentProviderCommercialUrl: https://www.vad.nl/mijnvad
                      organisationIcon: /icons/organisations/4.svg
                      organisationId: "4"
                      organisationName: NS
                      supersededByTripIds:
                        - 66539
                        - 66540
                      supersedesTripIds: []
                      tripStartTxnId: 1125977
                      tripEndTxnId: 1125978
                      numberOfSyntheticLegs: 3
                      numberofSyntheticTrips: 2
                      products:
                        - productTemplateId: "N/A"
                          purchaseDateTime: 2021-06-02T08:38:32Z
                          appliedValue: 2470
                          xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                          category: SALES
                          typesOfFareProduct:
                            - privateCode: payg
                          fareAggregationCycle: 2
                        - xpit: 72c11b8d-5a96-4cc2-9fc8-258a25b57f69
                          productTemplateId: "1:2001"
                          productCommercialName:
                            items:
                              - key: nl-NL
                                value: Pay As You Go Program (NL)
                              - key: en-US
                                value: Pay As You Go Program
                          validFrom: 2021-06-02T08:38:32Z
                          validUntil: 2099-12-31T23:59:59Z
                          weight: 2470
                          appliedMetric: FARE
                          appliedValue: 2470
                          xprofit: 0eb178f7-c548-417e-a44f-7248a582ac9d
                          xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                          category: INTERNAL
                          typesOfFareProduct:
                            - privateCode: payg
                      checkinTransactionTimestamp: 2021-06-01T06:00:00Z
                      checkoutTransactionTimestamp: 2021-06-01T06:22:00Z
                      checkinTransactionReference: 001e8481;1151;gemaltoPure
                      checkoutTransactionReference: 001e8481;1152;gemaltoPure
                      checkinLocation:
                        stopId: 621
                        stopName:
                          items:
                            - key: nl-NL
                              value: Utrecht Centraal
                            - key: en-US
                              value: Utrecht Centraal
                        stopDesc: Station Utrecht Centraal
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      checkoutLocation:
                        stopId: 253
                        stopName:
                          items:
                            - key: nl-NL
                              value: Goes
                            - key: en-US
                              value: Goes
                        stopDesc: Station Goes
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      xbot: 36637b86-7a31-4b77-99dd-2d39b9c1a9b6
                      tokenType: GemaltoPure
                      transportType: RAIL
                      lineId: "10"
                      networkId: "1"
                      networkName: HRN
                      vehicleId: 123
                      currency: EUR
                      transportIcon: /icons/transportTypes/rail.svg
                      legs:
                        - legId: 83387
                          checkinTransactionTimestamp: 2021-06-01T06:00:00Z
                          checkoutTransactionTimestamp: 2021-06-01T06:22:00Z
                          checkinLocation:
                            stopId: 621
                            stopName:
                              items:
                                - key: nl-NL
                                  value: Utrecht Centraal
                                - key: en-US
                                  value: Utrecht Centraal
                            stopDesc: Station Utrecht Centraal
                            stopUrl: /icons/stops/stop.svg
                            locationType: 0
                          checkoutLocation:
                            stopId: 253
                            stopName:
                              items:
                                - key: nl-NL
                                  value: Goes
                                - key: en-US
                                  value: Goes
                            stopDesc: Station Goes
                            stopUrl: /icons/stops/stop.svg
                            locationType: 0
                          baseRate: 2470
                          lineId: "10"
                          networkId: "1"
                          networkName: HRN
                          fare: 2470
                          fareState: CALCULATED
                          currency: EUR
                          products:
                            - productTemplateId: "N/A"
                              purchaseDateTime: 2021-06-02T08:38:32Z
                              appliedValue: 2470
                              xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                              category: SALES
                              typesOfFareProduct:
                                - privateCode: payg
                            - xpit: 72c11b8d-5a96-4cc2-9fc8-258a25b57f69
                              productTemplateId: "1:2001"
                              productCommercialName:
                                items:
                                  - key: nl-NL
                                    value: Pay As You Go Program (NL)
                                  - key: en-US
                                    value: Pay As You Go Program
                              validFrom: 2021-06-02T08:38:32Z
                              validUntil: 2099-12-31T23:59:59Z
                              weight: 2470
                              appliedMetric: FARE
                              appliedValue: 2470
                              xprofit: 0eb178f7-c548-417e-a44f-7248a582ac9d
                              xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                              category: INTERNAL
                              typesOfFareProduct:
                                - privateCode: payg
                          appliedTimePeriods: []
                          tariffJourneyStart: true
                          tariffDistance: 9
                          aggrGeoIntervalDistance: 9
                          topoDistance: 0
                          concessionId: "1"
                          tripLegIdx: 0
                          appliedZones:
                            - zoneId: "73"
                              zoneName:
                                items:
                                  - key: nl-NL
                                    value: Enschede-Glanerburg
                                  - key: en-US
                                    value: Enschede-Glanerburg
                      lastUpdatedTripDateTime: 2021-06-01T06:22:00Z
                      fare: 2470
                      loyaltyOrDiscount: false
                      supportCode: wYyM3nDb2Uy5ge
                      checkinTransactionId: 001e8481-1151-gemaltoPure-1622527200000
                      checkoutTransactionId: 001e8481-1152-gemaltoPure-1622528520000
                      tariffVersionId: NS:5
                      correlationId: c3ae1ba3-780a-4416-8a38-3fd03a9005b7
                      createdAt: 2021-06-02T15:03:46.813Z
                      _links: null
                  missingCkoTripDetails:
                    summary: Example of a trip with missing check-out
                    value:
                      tripId: 66538
                      tripVersion: 2
                      tripStatus: MISSING_CKO
                      tripFareNature: FIXED
                      paymentMethodId: dba0b896-118d-4e9e-abf5-af264ced34c4
                      paymentMethodMode: BAL
                      paymentMethodName: BAL
                      paymentProviderName: Account Balance
                      paymentProviderBusinessEntityId: "4"
                      paymentProviderCommercialName: VAD Flex
                      paymentProviderCommercialUrl: https://www.vad.nl/mijnvad
                      organisationIcon: /icons/organisations/4.svg
                      organisationId: "4"
                      organisationName: NS
                      supersededByTripIds:
                        - 66539
                        - 66540
                      supersedesTripIds: []
                      tripStartTxnId: 1125977
                      tripEndTxnId: 1125978
                      numberOfSyntheticLegs: 3
                      numberofSyntheticTrips: 2
                      products:
                        - productTemplateId: "N/A"
                          purchaseDateTime: 2021-06-02T08:38:32Z
                          appliedValue: 2470
                          xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                          category: SALES
                          typesOfFareProduct:
                            - privateCode: payg
                          fareAggregationCycle: 2
                        - xpit: 72c11b8d-5a96-4cc2-9fc8-258a25b57f69
                          productTemplateId: "1:2001"
                          productCommercialName:
                            items:
                              - key: nl-NL
                                value: Pay As You Go Program (NL)
                              - key: en-US
                                value: Pay As You Go Program
                          validFrom: 2021-06-02T08:38:32Z
                          validUntil: 2099-12-31T23:59:59Z
                          weight: 2470
                          appliedMetric: FARE
                          appliedValue: 2470
                          xprofit: 0eb178f7-c548-417e-a44f-7248a582ac9d
                          xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                          category: INTERNAL
                          typesOfFareProduct:
                            - privateCode: payg
                      checkinTransactionTimestamp: 2021-06-01T06:00:00Z
                      checkoutTransactionTimestamp: 2021-06-01T06:22:00Z
                      checkinTransactionReference: 001e8481;1151;gemaltoPure
                      checkoutTransactionReference: 001e8481;1152;gemaltoPure
                      checkinLocation:
                        stopId: 621
                        stopName:
                          items:
                            - key: nl-NL
                              value: Utrecht Centraal
                            - key: en-US
                              value: Utrecht Centraal
                        stopDesc: Station Utrecht Centraal
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      checkoutLocation:
                        stopId: 253
                        stopName:
                          items:
                            - key: nl-NL
                              value: Goes
                            - key: en-US
                              value: Goes
                        stopDesc: Station Goes
                        stopUrl: /icons/stops/stop.svg
                        locationType: 0
                      xbot: 36637b86-7a31-4b77-99dd-2d39b9c1a9b6
                      tokenType: GemaltoPure
                      transportType: RAIL
                      lineId: "10"
                      networkId: "1"
                      networkName: HRN
                      vehicleId: 123
                      currency: EUR
                      transportIcon: /icons/transportTypes/rail.svg
                      legs:
                        - legId: 83387
                          checkinTransactionTimestamp: 2021-06-01T06:00:00Z
                          checkoutTransactionTimestamp: null
                          checkinLocation:
                            stopId: 621
                            stopName:
                              items:
                                - key: nl-NL
                                  value: Utrecht Centraal
                                - key: en-US
                                  value: Utrecht Centraal
                            stopDesc: Station Utrecht Centraal
                            stopUrl: /icons/stops/stop.svg
                            locationType: 0
                          checkoutLocation: null
                          baseRate: 400
                          lineId: "10"
                          networkId: "1"
                          networkName: HRN
                          fare: 400
                          fareState: CALCULATED
                          currency: EUR
                          products:
                            - productTemplateId: "N/A"
                              purchaseDateTime: 2021-06-02T08:38:32Z
                              appliedValue: 400
                              xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                              category: SALES
                              typesOfFareProduct:
                                - privateCode: payg
                            - xpit: 72c11b8d-5a96-4cc2-9fc8-258a25b57f69
                              productTemplateId: "1:2001"
                              productCommercialName:
                                items:
                                  - key: nl-NL
                                    value: Pay As You Go Program (NL)
                                  - key: en-US
                                    value: Pay As You Go Program
                              validFrom: 2021-06-02T08:38:32Z
                              validUntil: 2099-12-31T23:59:59Z
                              weight: 400
                              appliedMetric: FARE
                              appliedValue: 400
                              xprofit: 0eb178f7-c548-417e-a44f-7248a582ac9d
                              xspit: 39b9183d-767d-4364-9d1b-575613c12a96
                              category: INTERNAL
                              typesOfFareProduct:
                                - privateCode: payg
                          appliedTimePeriods: []
                          tariffJourneyStart: true
                          tariffDistance: 9
                          aggrGeoIntervalDistance: 9
                          topoDistance: 0
                          concessionId: "1"
                          tripLegIdx: 0
                          appliedZones:
                            - zoneId: "73"
                              zoneName:
                                items:
                                  - key: nl-NL
                                    value: Enschede-Glanerburg
                                  - key: en-US
                                    value: Enschede-Glanerburg
                      lastUpdatedTripDateTime: 2021-06-01T06:22:00Z
                      fare: 2470
                      loyaltyOrDiscount: false
                      supportCode: wYyM3nDb2Uy5ge
                      checkinTransactionId: 001e8481-1151-gemaltoPure-1622527200000
                      checkoutTransactionId: null
                      tariffVersionId: NS:5
                      correlationId: c3ae1ba3-780a-4416-8a38-3fd03a9005b7
                      createdAt: 2021-06-02T15:03:46.813Z
                      _links:
                        getStopsForCorrection:
                          href: https://services.acc.api.htm.nl/abt/abtcustomers/1.0/customers/trips/stops?xbot=36637b86-7a31-4b77-99dd-2d39b9c1a9b6&tripId=66538
                          method: GET
                          templated: false
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403Response'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /customers/trips/stops:
    get:
      tags:
        - Trips
      summary: 9776 - Get Possible Stops With Details
      operationId: API-9776v3_getPossibleStopsWithDetails
      description: Get Possible Stops With Details
      security:
        - default: []
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: xbot
          description: >-
            A xBOT IS AN unique identifier THAT is an external representation of
            a backoffice Token for a particular Business Entity
          in: query
          required: true
          schema:
            type: string
            format: uuid
        - name: tripId
          in: query
          description: A tripId IS AN identifier THAT distinguishes a Trip from all other Trips
          required: false
          schema:
            type: integer
            format: int64
        - name: transactionId
          in: query
          description: >-
            A transactionId IS A unique identifier THAT is generated by the GBO
            and assigned to every Transaction that is received
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success with results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingCkiCkoRequest'
              examples:
                possibleStopsResponse:
                  summary: Possible stops for a trip with missing check-out
                  value:
                    xbot: 36637b86-7a31-4b77-99dd-2d39b9c1a9b6
                    counterpartTransactionId: 003D08FF-75032799-emv-1773668001000
                    counterpartEntryExitType: ENTRY
                    counterpartTimeStamp: 2026-03-16T14:33:21+01:00
                    counterpartStop:
                      alternativeTexts:
                        - text:
                            lang: nl-NL
                            textIdType: publicName
                            text: Delftsewallen
                        - text:
                            lang: en-US
                            textIdType: publicName
                            text: Delftsewallen
                      name: Stop point8124
                      description: Stop point8124
                      stopId: '8124'
                      transportModes: []
                    deviceId: '3999999'
                    deviceClassId: '0'
                    scheduledStopPoints:
                      - alternativeTexts:
                          - text:
                              lang: nl-NL
                              textIdType: publicName
                              text: Centrum-West
                          - text:
                              lang: en-US
                              textIdType: publicName
                              text: Centrum-West
                        name: Stop point8127
                        description: Stop point8127
                        stopId: '8127'
                        transportModes: []
                      - alternativeTexts:
                        - text:
                            lang: nl-NL
                            textIdType: publicName
                            text: Halte Onbekend
                        - text:
                            lang: en-US
                            textIdType: publicName
                            text: Halte Onbekend
                        name: Stop point65533
                        description: Stop point65533
                        stopId: '65533'
                        transportModes: []
                      - alternativeTexts:
                          - text:
                              lang: nl-NL
                              textIdType: publicName
                              text: Dorp
                          - text:
                              lang: en-US
                              textIdType: publicName
                              text: Dorp
                        name: Stop point8126
                        description: Stop point8126
                        stopId: '8126'
                        transportModes: []
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403Response'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
  /customers/trips/missing-taps:
    post:
      tags:
        - Trips
      summary: 8255 - Manual Check-in or Check-out
      description: >-
        Creates manual Check-in or Check-out for transactions that are missing
        their pair. Check-in or Check-out directions are defined using
        **entryExitType** parameter in body respectivelly
      operationId: API-8255v3_manualCheckInOrCheckOut
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManualTap'
        required: true
      responses:
        '200':
          description: Operation successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericOkResponse'
              example:
                referenceId: BSS-1627294719604
                numberOfRemainingAttempts: 0
                timeOfNextAllowedAttempt: '2022-03-19T17:07:31Z'
        '400':
          description: |-
            Bad request        
            List of possible error codes:
             
               * 402 - Unable to store message 
               * 403 - Unable to send message to NotificationProcessor 
               * 404 - Unable to parse message 
               * 405 - Unable to validate message 
               * 406 - Missing mandatory headers 
               * 407 - Counter Transaction not found 
               * 408 - Manual taps limit exceeded 
               * 409 - Unable to send message to Orchestrator 
               * 410 - Unable to construct message 
               * 411 - Unable to get data 
               * 412 - Unable to get bin 
               * 422 - Duplicate manual tap 
             
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              example:
                errorMessage:
                  message: >-
                    Maximum limit 5 of manual taps reached for beId = 7 and role
                    = PTO within a period of 2592000 seconds for this token
                  referenceId: BSS-1627294719604
                businessExceptions:
                  - code: '408'
                    message: Manual taps limit exceeded
                  - code: BSS-timeOfNextAllowedAttempt
                    message: '2022-03-19T17:07:31Z'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
              example:
                errorMessage:
                  message: The server responded with http status code 500
                  referenceId: BSS-1627294719604
                businessExceptions:
                  - code: '5026'
                    message: Unable to send request to Orchestrator
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/503Response'
              example:
                errorMessage:
                  message: The server responded with http status code 503
                  referenceId: BSS-1627294719604
                businessExceptions:
                  - code: '5026'
                    message: Unable to send request to Orchestrator
      x-codegen-request-body-name: ManualTap
      security:
        - default: []
components:
  securitySchemes:
    default:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://services.acc.api.htm.nl/authorize
          scopes: {}
  schemas:
    getTokenTrips:
      type: array
      items:
        type: object
        properties:
          tripId:
            type: number
          tripVersion:
            type: number
          transportType:
            type: string
          lineId:
            type: string
          tripStatus:
            type: string
          fare:
            type: number
          currency:
            type: string
          lastUpdatedTripDateTime:
            type: string
          checkinTransactionTimestamp:
            type: string
          checkoutTransactionTimestamp:
            type: string
          checkinLocation:
            type: object
            properties:
              stopId:
                type: number
              stopName:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        value:
                          type: string
              stopDesc:
                type: string
              stopUrl:
                type: string
              locationType:
                type: number
          checkoutLocation:
            type: object
            properties:
              stopId:
                type: number
              stopName:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        value:
                          type: string
              stopDesc:
                type: string
              stopUrl:
                type: string
              locationType:
                type: number
          loyaltyOrDiscount:
            type: boolean
          _links:
            type: object
            properties:
              tripDetails:
                type: object
                properties:
                  href:
                    type: string
                  method:
                    type: string
                  templated:
                    type: boolean
              getStopsForCorrection:
                type: object
                properties:
                  href:
                    type: string
                  method:
                    type: string
                  templated:
                    type: boolean
    getTrips:
      type: object
      properties:
        tripId:
          type: number
        tripVersion:
          type: number
        tripStatus:
          type: string
        organisationIcon:
          type: string
        organisationId:
          type: string
        organisationName:
          type: string
        supersededByTripIds:
          type: array
          items:
            type: number
        supersedesTripIds:
          type: array
          items:
            type: object
        tripStartTxnId:
          type: number
        tripEndTxnId:
          type: number
        numberOfSyntheticLegs:
          type: number
        numberofSyntheticTrips:
          type: number
        products:
          type: array
          items:
            type: object
            properties:
              productTemplateId:
                type: string
              purchaseDateTime:
                type: string
              appliedValue:
                type: number
              xspit:
                type: string
              category:
                type: string
              typesOfFareProduct:
                type: array
                items:
                  type: object
                  properties:
                    privateCode:
                      type: string
        checkinTransactionTimestamp:
          type: string
        checkoutTransactionTimestamp:
          type: string
        checkinTransactionReference:
          type: string
        checkoutTransactionReference:
          type: string
        checkinLocation:
          type: object
          properties:
            stopId:
              type: number
            stopName:
              type: object
              properties:
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                      value:
                        type: string
            stopDesc:
              type: string
            stopUrl:
              type: string
            locationType:
              type: number
        checkoutLocation:
          type: object
          properties:
            stopId:
              type: number
            stopName:
              type: object
              properties:
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                      value:
                        type: string
            stopDesc:
              type: string
            stopUrl:
              type: string
            locationType:
              type: number
        xbot:
          type: string
        tokenType:
          type: string
        transportType:
          type: string
        lineId:
          type: string
        networkId:
          type: string
        networkName:
          type: string
        currency:
          type: string
        transportIcon:
          type: string
        legs:
          type: array
          items:
            type: object
            properties:
              legId:
                type: number
              checkinTransactionTimestamp:
                type: string
              checkoutTransactionTimestamp:
                type: string
              checkinLocation:
                type: object
                properties:
                  stopId:
                    type: number
                  stopName:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                            value:
                              type: string
                  stopDesc:
                    type: string
                  stopUrl:
                    type: string
                  locationType:
                    type: number
              checkoutLocation:
                type: object
                properties:
                  stopId:
                    type: number
                  stopName:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                            value:
                              type: string
                  stopDesc:
                    type: string
                  stopUrl:
                    type: string
                  locationType:
                    type: number
              baseRate:
                type: number
              lineId:
                type: string
              networkId:
                type: string
              networkName:
                type: string
              fare:
                type: number
              fareState:
                type: string
              currency:
                type: string
              products:
                type: array
                items:
                  type: object
                  properties:
                    productTemplateId:
                      type: string
                    purchaseDateTime:
                      type: string
                    appliedValue:
                      type: number
                    xspit:
                      type: string
                    category:
                      type: string
                    typesOfFareProduct:
                      type: array
                      items:
                        type: object
                        properties:
                          privateCode:
                            type: string
              appliedTimePeriods:
                type: array
                items:
                  type: object
              tariffJourneyStart:
                type: boolean
              tariffDistance:
                type: number
              aggrGeoIntervalDistance:
                type: number
              topoDistance:
                type: number
              concessionId:
                type: string
              tripLegIdx:
                type: number
              appliedZones:
                type: array
                items:
                  type: object
                  properties:
                    zoneId:
                      type: string
                    zoneName:
                      type: object
                      properties:
                        items:
                          type: array
                          items:
                            type: object
                            properties:
                              key:
                                type: string
                              value:
                                type: string
        lastUpdatedTripDateTime:
          type: string
        fare:
          type: number
        loyaltyOrDiscount:
          type: boolean
        supportCode:
          type: string
        checkinTransactionId:
          type: string
        checkoutTransactionId:
          type: string
        tariffVersionId:
          type: string
        correlationId:
          type: string
        createdAt:
          type: string
        _links:
          type: object
          properties:
            getStopsForCorrection:
              type: object
              properties:
                href:
                  type: string
                method:
                  type: string
                templated:
                  type: boolean
    MissingCkiCkoRequest:
      type: object
      properties:
        xbot:
          type: string
          description: >-
            A xBOT IS AN unique identifier THAT is an external representation of
            a backoffice Token for a particular Business Entity
        counterpartTransactionId:
          type: string
          description: >-
            A counterpartTransactionId IS A unique identifier THAT assigned to
            every Transaction that is received
        counterpartEntryExitType:
          type: string
          description: >-
            AN counterpartEntryExitType IS AN direction indicator THAT describes
            a possible direction indicated by the callee that created the
            Transaction
        counterpartTimeStamp:
          type: string
          description: >-
            A counterpartTimeStamp IS A date, time and time zone indication THAT
            describes when the Transaction was created either by a Device or
            callee
        counterpartStop:
          $ref: '#/components/schemas/ScheduledStopPointData'
        deviceId:
          type: string
          description: >-
            A deviceId IS AN unique identifier THAT distinguishes a Device from
            all other Devices
        deviceClassId:
          type: string
          description: >-
            A deviceClassId IS AN enumerated identifier THAT describes the type
            of Device responsible for creating the Transaction
        scheduledStopPoints:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledStopPointData'          
    ScheduledStopPointData:
      type: object
      properties:
        alternativeTexts:
          type: array
          items:
            $ref: '#/components/schemas/AlternativeText'
        name:
          type: string
          description: >-
            A name IS A string THAT is used to described name of the
            TariffLocation name
        shortName:
          type: string
          description: >-
            A shortName IS AN abbreviation THAT contains a shortened version of
            the TariffLocation name
        description:
          type: string
          description: >-
            A description IS A string THAT is used as an additional label of the
            TariffLocation as defined in the Tariff Fragment
        location:
          $ref: '#/components/schemas/Location'
        stopId:
          type: string
          description: >-
            A stopId IS A unique identifier THAT distinguishes a Tariff Location
            from all other Tariff Locations
        transportModes:
          type: array
          description: >-
            A transportMode IS AN identifier THAT describes the mode of
            transport
          items:
            type: string
    AlternativeText:
      type: object
      description: >-
        AN AlternativeText IS AN object THAT contains values to enable one or
        more language translations
      properties:
        text:
          type: object
          description: >-
            A text is AN wrapper THAT is used as an abstraction layer to contain
            the properties of AlternativeText
          properties:
            lang:
              type: string
              description: >-
                A lang IS AN enumerated identifier THAT describes the language
                of the text within the AlternativeText object
              example: en-US
            textIdType:
              type: string
              description: A textIdType IS AN name THAT is used to categorize types of text
              example: publicName
            text:
              type: string
              description: >-
                A text IS A name THAT has been translated to a particular
                language
              example: Default Travel Entitlement
    Location:
      type: object
      properties:
        longitude:
          type: number
          description: >-
            A longitude IS A number THAT represents the geographic coordinate
            that specifies the east-west position of a point on the surface of
            the Earth
        latitude:
          type: number
          description: >-
            A latitude IS A number THAT represents the geographic coordinate
            that specifies the north-south position of a point on the surface of
            the Earth
        altitude:
          type: number
          description: >-
            AN altitude IS A number THAT represents the height of an object or
            point in relation to sea level or ground level
    ManualTap:
      required:
        - xbot
        - counterpartTransactionId
        - deviceClassId
        - deviceId
        - stopId
      type: object
      properties:
        counterpartTransactionId:
          type: string
          description: Id of the transaction that is missing its pair
          example: 001e8481-1151-gemaltoPure-1622527200000
        xbot:
          type: string
          description: Token identification code (external backoffice token)
          example: 36637b86-7a31-4b77-99dd-2d39b9c1a9b6
        stopId:
          type: string
          description: Id of the location of the tap
          example: 42
        deviceId:
          type: string
          description: Id of the device
          example: 3212967
        deviceClassId:
          type: string
          description: Class Id of the device
          example: 9
        transactionTimestamp:
          type: string
          description: Timestamp of the transaction
          format: date-time
          example: 2019-11-25T17:39:45.000Z
        entryExitType:
          type: string
          description: 'Direction of the tap: in or out'
          example: EXIT
          enum:
            - UNKNOWN
            - ENTRY
            - EXIT
      description: JSON schema for ManualTap message
    GenericOkResponse:
      required:
        - referenceId
      description: Ok response object
      type: object
      properties:
        referenceId:
          type: string
          description: Reference identification code
        numberOfRemainingAttempts:
          type: integer
          description: Number of remaining attempts
        timeOfNextAllowedAttempt:
          type: string
          format: date-time
          description: Time when next attempt is allowed
    400Response:
      type: object
      properties:
        code:
          type: string
          example: '400'
        type:
          type: string
        message:
          type: string
          example: Bad Request
        description:
          type: string
          example: >-
            'Bad Request: Input parameters missing! Please fill in at least 1
            valid input parameter.
    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.
    403Response:
      type: object
      properties:
        code:
          type: string
          example: '900901'
        type:
          type: string
        message:
          type: string
          example: Retailer not authorized
        description:
          type: string
          example: >-
            The retailer is not allowed to access resource for requested
            touchpoint.
    404Response:
      type: object
      properties:
        code:
          type: string
          example: '404'
        type:
          type: string
          example: Status report
        message:
          type: string
          example: Not Found
        description:
          type: string
          example: The requested resource is not available.
    500Response:
      type: object
      properties:
        code:
          type: string
          example: '500'
        type:
          type: string
        message:
          type: string
          example: Internal Server Error
        description:
          type: string
    503Response:
      type: object
      properties:
        code:
          type: string
          example: '503'
        type:
          type: string
        message:
          type: string
          example: Service Unavailable
        description:
          type: string