---
openapi: 3.0.3
info:
  title: PACE Payment API
  description: 'The PACE Payment API is responsible for managing payment methods for
    users as well as authorizing payments on behalf of PACE services.

    '
  termsOfService: https://legal.pace.cloud/
  contact:
    name: PACE Developer Support
    url: https://developer.pace.cloud
    email: api-access@pace.car
  version: 2022-1
servers:
- url: https://api.pace.cloud/pay/2022-1
  description: Production server (stable release 2022-1)
paths:
  "/payment-method-kinds/applepay/session":
    post:
      tags:
      - Payment Tokens
      operationId: RequestApplePaySession
      security:
      - OAuth2:
        - pay:applepay-sessions:create
      - OIDC:
        - pay:applepay-sessions:create
      summary: Requests an Apple Pay session.
      description: |
        Requests a new Apple Pay session including merchant validation.
        The client needs to acquire the validation url beforehand.

        This endpoint is pre-requisite for calling `/payment-method-kinds/applepay/authorize`.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/RequestApplePaySession"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/ApplePaySession"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          description: Amount cannot be authorized
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '404':
          description: 'Payment information cannot be resolved with Apple Pay.

            '
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/payment-method-kinds/applepay/authorize":
    post:
      tags:
      - Payment Tokens
      operationId: AuthorizeApplePayPaymentToken
      security:
      - OAuth2:
        - pay:payment-tokens:create
      - OIDC:
        - pay:payment-tokens:create
      summary: Authorize a payment using Apple Pay by providing a Apple Pay token.
      description: |
        When successful, returns a paymentToken value. Requires the caller to interact with Apple Pay
        to create the `applePay` section.

        Clients need to call `/payment-method-kinds/applepay/session` beforehand to obtain a Apple Pay
        PaymentSession that can be used to obtain the applePay payload.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentTokenCreateApplePay"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentToken"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          description: Amount cannot be authorized
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '404':
          description: 'Payment information cannot be resolved with Apple Pay.

            '
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '410':
          "$ref": "#/components/responses/Gone"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/payment-method-kinds/googlepay/authorize":
    post:
      tags:
      - Payment Tokens
      operationId: AuthorizeGooglePayPaymentToken
      security:
      - OAuth2:
        - pay:payment-tokens:create
      - OIDC:
        - pay:payment-tokens:create
      summary: Authorize a payment using Google Pay by providing a Google Pay token.
      description: |
        When successful, returns a paymentToken value. Requires the caller to interact with Google Pay
        to create the `googlePay` specific authorization data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentTokenCreateGooglePay"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentToken"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          description: Amount cannot be authorized
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '404':
          description: 'Payment information cannot be resolved with Google Pay.

            '
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '410':
          "$ref": "#/components/responses/Gone"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/payment-method-kinds":
    get:
      tags:
      - Payment Method Kinds
      operationId: GetPaymentMethodKinds
      security:
      - OAuth2:
        - pay:payment-methods:read
      - OIDC:
        - pay:payment-methods:read
      summary: Get all payment method kinds
      description: Returns all payment method kinds that are supported by this service.
        Use the Accept-Language header for localization.
      parameters:
      - in: header
        name: Accept-Language
        description: Language preference of localized response properties. The full
          standard of RFC 7231 (https://tools.ietf.org/html/rfc7231#section-5.3.5)
          is supported.
        schema:
          type: string
        example: de
      - in: query
        name: additionalData
        description: Flag to allow more data to the payment method kinds.
        schema:
          type: boolean
          example: false
        required: false
      - in: query
        name: poiID
        description: Filter allowed payment methods kinds by poi.
        schema:
          type: string
          format: uuid
          example: 501d74de-ab6a-4c59-8512-c6f5c7516529
        required: false
      responses:
        '200':
          description: All payment method kinds
          headers:
            Content-Language:
              schema:
                type: string
              description: Language of the localized response properties. Is not necessarily
                one of the values provided by the Accept-Language request header.
              example: en-GB
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethodKinds"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/sepa-direct-debit":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodSEPA
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register SEPA direct debit as a payment method
      description: |
        By registering you allow the user to use SEPA direct debit as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodSepaCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: d7101f72-a672-453c-9d36-d5809ef0ded6
                  attributes:
                    kind: sepa
                    identificationString: DEUTSCHEBANK XX 3000
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/creditcard":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodCreditCard
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a CreditCard as a payment method
      description: |
        By registering you allow the user to use a CreditCard as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodCreditCardCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: creditcard
                    identificationString: Mastercard **** **** **** 4135
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., credit card expired
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider, e.g., wrong checksum (CVC)
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
            * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004` below)
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
              example:
                errors:
                - id: buck3h44qtf5j268141g
                  title: payment method rejected by provider
                  detail: payment method rejected by provider
                  status: '422'
                  code: provider:payment-method-rejected
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/pacecardsandbox":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodPACECardSandbox
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a PACE Sandbox Card as a payment method
      description: |
        By registering you allow the user to use a PACE Sandbox Card as a payment method.
        This payment method only works on *test environments* and is *reserved for testing purposes*.
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: pacecardsandbox
                    identificationString: PACE Sandbox Card
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., credit card expired
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider, e.g., wrong checksum (CVC)
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
            * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004` below)
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
              example:
                errors:
                - id: buck3h44qtf5j268141g
                  title: payment method rejected by provider
                  detail: payment method rejected by provider
                  status: '422'
                  code: provider:payment-method-rejected
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/dkv":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodDKV
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a DKV Card as a payment method
      description: |
        By registering you allow the user to use a DKV Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodDKVCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: dkv
                    identificationString: DKV Card XX 1234
                    managed: true
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/hoyer":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodHoyer
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a Hoyer Card as a payment method
      description: |
        By registering you allow the user to use a Hoyer Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodHoyerCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: hoyer
                    identificationString: Hoyer Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/zgm":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodZGM
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a Zieglmeier Card as a payment method
      description: |
        By registering you allow the user to use a Zieglmeier Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodZGMCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: zgm
                    identificationString: Zieglmeier Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/roadrunner":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodRoadrunner
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a Roadrunner Card as a payment method
      description: |
        By registering you allow the user to use a Roadrunner Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodRoadrunnerCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: roadrunner
                    identificationString: Roadrunner Card XX 1234
                    managed: true
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/logpay":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodLogpay
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a Logpay Card as a payment method
      description: |
        By registering you allow the user to use a Logpay Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodLogpayCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: logpay
                    identificationString: Logpay Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/logpaysandbox":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodLogpaysandbox
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a Logpaysandbox Card as a payment method
      description: |
        By registering you allow the user to use a Logpaysandbox Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodLogpaysandboxCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: logpaysandbox
                    identificationString: Logpay Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/esso":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodEsso
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register an Esso Card as a payment method
      description: |
        By registering you allow the user to use a Esso Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodEssoCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: esso
                    identificationString: Esso Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/tfc":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodTFC
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a The Fuel Company Card as a payment method
      description: |
        By registering you allow the user to use a The Fuel Company Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodTFCCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: tfc
                    identificationString: The Fuel Company Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/tfcsandbox":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodTFCSandbox
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a TFC Sandbox Card as a payment method
      description: |
        By registering you allow the user to use a TFCSandbox Card as a payment method.
        The payment method ID is optional when posting data.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodTFCSandboxCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: tfcsandbox
                    identificationString: TFC Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/paypal":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodPayPal
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register PayPal as a payment method
      description: |
        By registering you allow the user to use PayPal as a payment method.
        The payment method ID is optional when posting data.
        If you provide a valid Billing Agreement ID, the payment method is created directly. Alternatively you can provide all three redirect URLs in which case the backend will create the Billing Agreement for you. Creating a Billing Agreement is a 2-step process, thus the payment method will only be created after the user approved it on the PayPal website. The approval URL in the response will point you to the correct page. After the user takes action the user is redirected to one of the three redirect URLs provided by you.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodPayPalCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: paypal
                    approvalURL: https://www.paypal.com/agreements/approve?ba_token=BA-0S67615936363915B
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/paydirekt":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodPayDirekt
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register PayDirekt as a payment method
      description: |
        By registering you allow the user to use PayDirekt as a payment method.
        The payment method ID is optional when posting data.
        Registering PayDirekt as payment method is a 2-step process, thus the payment method will only be created after the user approved it on the PayDirekt website. The approval URL in the response will point you to the correct page. After the user takes action the user is redirected to one of the three redirect URLs provided by you.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodPayDirektCreate"
            example:
              data:
                id: 997adc37-69b4-41c9-a5b5-acb04721ec10
                type: paymentMethod
                attributes:
                  kind: paydirekt
                  successURL: https://example.com/success
                  failureURL: https://example.com/failure
                  canceledURL: https://example.com/canceled
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: paydirekt
                    approvalURL: https://www.paydirekt.com/approval
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/giropay":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodGiropay
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register Giropay (formerly paydirekt) as a payment method
      description: |
        By registering you allow the user to use giropay as a payment method.
        The payment method ID is optional when posting data.
        Registering giropay as payment method is a 2-step process, thus the payment method will only be created after the user approved it on the PayDirekt website. The approval URL in the response will point you to the correct page. After the user takes action the user is redirected to one of the three redirect URLs provided by you.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodGiropayCreate"
            example:
              data:
                id: 997adc37-69b4-41c9-a5b5-acb04721ec10
                type: paymentMethod
                attributes:
                  kind: giropay
                  successURL: https://example.com/success
                  failureURL: https://example.com/failure
                  canceledURL: https://example.com/canceled
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: paydirekt
                    approvalURL: https://www.paydirekt.com/approval
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/omv":
    post:
      tags:
      - New Payment Methods
      operationId: CreatePaymentMethodOMV
      security:
      - OAuth2:
        - pay:payment-methods:create
      - OIDC:
        - pay:payment-methods:create
      summary: Register a OMV card as a payment method
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethodOMVCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
              example:
                data:
                  type: paymentMethod
                  id: fc900b1f-97fc-4c9c-92de-e6d2f2dcc554
                  attributes:
                    kind: omv
                    identificationString: OMV Card XX 123
        '303':
          description: Already exists
          headers:
            Location:
              description: Location of the already existing payment method
              schema:
                type: string
                format: url
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: |
            The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
            * `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated
            * `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.
            * `invalid-charset`: The fields charset is not latin
            * `too-long`: The fields content is too long
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/Errors"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/{paymentMethodId}":
    get:
      tags:
      - Payment Methods
      operationId: GetPaymentMethod
      security:
      - OAuth2:
        - pay:payment-methods:read
      - OIDC:
        - pay:payment-methods:read
      summary: Get a payment method
      parameters:
      - in: path
        name: paymentMethodId
        schema:
          type: string
          format: uuid
        required: true
        description: ID of the paymentMethod
        example: d7101f72-a672-453c-9d36-d5809ef0ded6
      responses:
        '200':
          description: The requested payment method.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
                  included:
                    type: array
                    items:
                      anyOf:
                      - "$ref": "#/components/schemas/PaymentMethodVendor"
                      - "$ref": "#/components/schemas/PaymentMethodKindMinimal"
                    example:
                    - type: paymentMethodVendor
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: Mastercard
                        slug: mastercard
                        logo:
                          href: "/cms/images/payment-method-vendors/mastercard.png"
                          variants:
                          - dark:
                              href: "/cms/images/payment-method-vendors/mastercard-dark.png"
                    - type: paymentMethodKind
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: SEPA direct debit
                        twoFactor: true
                        fuelcard: false
                        implicit: true
                        vendorPRNs:
                        - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
                        - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
    patch:
      tags:
      - Payment Methods
      operationId: PatchPaymentMethod
      security:
      - OAuth2:
        - pay:payment-methods:patch
      - OIDC:
        - pay:payment-methods:patch
      summary: Patch a payment method
      description: 'Allows to change fields that can be changed by the customer.

        '
      parameters:
      - in: path
        name: paymentMethodId
        schema:
          type: string
          format: uuid
        required: true
        description: ID of the paymentMethod
        example: d7101f72-a672-453c-9d36-d5809ef0ded6
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentMethod"
      responses:
        '200':
          description: The patched payment method.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethod"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
    delete:
      tags:
      - Payment Methods
      operationId: DeletePaymentMethod
      security:
      - OAuth2:
        - pay:payment-methods:delete
      - OIDC:
        - pay:payment-methods:delete
      summary: Delete a payment method
      parameters:
      - in: path
        name: paymentMethodId
        schema:
          type: string
          format: uuid
        required: true
        description: ID of the paymentMethod
        example: 93db55b6-a9ab-4597-a253-49a1718cea0a
      responses:
        '204':
          description: The payment method was deleted successfully.
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '405':
          "$ref": "#/components/responses/MethodNotAllowed"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/{paymentMethodId}/notification":
    post:
      tags:
      - Payment Methods
      operationId: NotificationForPaymentMethod
      summary: Notify about payment method data
      parameters:
      - in: query
        name: type
        schema:
          type: string
          description: one of sepa, creditcard, paypal, paydirekt, dkv, applepay,
            ...
        description: Type of the notification
      - in: path
        name: paymentMethodId
        schema:
          type: string
        required: true
        description: ID of the paymentMethod
        example: 93db55b6-a9ab-4597-a253-49a1718cea0a
      responses:
        '200':
          description: Notification received
      deprecated: true
  "/payment-methods/{paymentMethodId}/model":
    post:
      tags:
      - Payment Methods
      operationId: PaymentMethodModel
      security:
      - OAuth2:
        - pay:payment-methods:read
      - OIDC:
        - pay:payment-methods:read
      summary: Returns the model of the Payment Method e.g. "reseller"
      parameters:
      - in: path
        name: paymentMethodId
        schema:
          type: string
          format: uuid
        required: true
        description: ID of the paymentMethod
        example: 93db55b6-a9ab-4597-a253-49a1718cea0a
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/RequestPaymentMethodModel"
      responses:
        '200':
          description: The Payment Method model was successfully fetched.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethodModel"
        '400':
          description: Error while getting model of payment method
      deprecated: true
  "/payment-methods/confirm/{token}":
    get:
      tags:
      - Payment Methods
      operationId: ConfirmPaymentMethod
      summary: Confirm and redirect to frontend
      description: Redirect endpoint to confirm a payment method. External services
        redirect the user here and in turn this endpoint redirects the user to the
        frontend.
      parameters:
      - in: path
        name: token
        schema:
          type: string
        required: true
        description: single use token
        example: eyJ1Ijoic2VwcCIsIm4iOiIza2t6VHVlMk9Icz0ifQ
      responses:
        '303':
          description: Goto frontend
          headers:
            Location:
              description: Location in the frontend to get in order to finish onboarding.
              schema:
                type: string
                format: url
        '404':
          "$ref": "#/components/responses/NotFound"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods?filter[status]=valid":
    get:
      tags:
      - Payment Methods
      operationId: GetPaymentMethodsIncludingCreditCheck
      security:
      - OAuth2:
        - pay:payment-methods:read
      - OIDC:
        - pay:payment-methods:read
      summary: Get all ready-to-use payment methods for user
      description: |-
        This request will return a list of supported payment methods for the current user that they can, in theory, use. That is, ones that are valid and can immediately be used.</br></br>
        This is as opposed to the regular `/payment-methods`, which does not categorize payment methods as valid for use.</br></br>
        You should trigger this when the user is approaching on a gas station with fueling support to get a list of available payment methods.</br></br>
        If the list is empty, you can ask the user to add a payment method to use PACE fueling.
      parameters:
      - in: query
        name: filter[status]
        schema:
          type: string
          enum:
          - valid
        required: true
        example: valid
      - in: query
        name: filter[purpose]
        schema:
          "$ref": "#/components/schemas/PRN"
      responses:
        '200':
          description: All the payment methods that could be used.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethods"
                  included:
                    type: array
                    items:
                      anyOf:
                      - "$ref": "#/components/schemas/PaymentMethodVendor"
                      - "$ref": "#/components/schemas/PaymentMethodKindMinimal"
                    example:
                    - type: paymentMethodVendor
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: Mastercard
                        slug: mastercard
                        logo:
                          href: "/cms/images/payment-method-vendors/mastercard.png"
                          variants:
                          - dark:
                              href: "/cms/images/payment-method-vendors/mastercard-dark.png"
                    - type: paymentMethodKind
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: SEPA direct debit
                        twoFactor: true
                        fuelcard: false
                        implicit: true
                        vendorPRNs:
                        - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
                        - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods?filter[status]=createdOrValid":
    get:
      tags:
      - Payment Methods
      operationId: GetPaymentMethodsIncludingCreditCheckMultiStatus
      security:
      - OAuth2:
        - pay:payment-methods:read
      - OIDC:
        - pay:payment-methods:read
      summary: Get all ready-to-use payment methods for user, combining created and
        valid methods
      description: |-
        This request will return a list of supported payment methods for the current user that they can, in theory, use. That is, ones that are valid and can immediately be used including methods that could be used if the verification step is complated.</br></br>
        This is as opposed to the regular `/payment-methods`, which does not categorize payment methods as valid for use.</br></br>
        You should trigger this when the user is approaching on a gas station with fueling support to get a list of available payment methods.</br></br>
        If the list is empty, you can ask the user to add a payment method to use PACE fueling.
      parameters:
      - in: query
        name: filter[status]
        schema:
          type: string
          enum:
          - createdOrValid
        required: true
        example: createdOrValid
      - in: query
        name: filter[purpose]
        schema:
          "$ref": "#/components/schemas/PRN"
      responses:
        '200':
          description: All the payment methods that could be used.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethods"
                  included:
                    type: array
                    items:
                      anyOf:
                      - "$ref": "#/components/schemas/PaymentMethodVendor"
                      - "$ref": "#/components/schemas/PaymentMethodKindMinimal"
                    example:
                    - type: paymentMethodVendor
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: Mastercard
                        slug: mastercard
                        logo:
                          href: "/cms/images/payment-method-vendors/mastercard.png"
                          variants:
                          - dark:
                              href: "/cms/images/payment-method-vendors/mastercard-dark.png"
                    - type: paymentMethodKind
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: SEPA direct debit
                        twoFactor: true
                        fuelcard: false
                        implicit: true
                        vendorPRNs:
                        - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
                        - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods?include=paymentTokens":
    get:
      tags:
      - Payment Methods
      operationId: GetPaymentMethodsIncludingPaymentToken
      security:
      - OAuth2:
        - pay:payment-methods:read
        - pay:payment-tokens:read
      - OIDC:
        - pay:payment-methods:read
        - pay:payment-tokens:read
      summary: Get all payment methods and include pre-authorized payment tokens when
        available
      description: |-
        This request returns all payment methods with included pre-authorized tokens.</br></br>
        The list will contain the pre-authorized amount (incl. currency), the purpose PRNs, all information about the payment method, and the paymentToken that can be used to complete the payment.</br> If no payment method is associated with a pre-authorized token, the result will contain only the payment methods.</br></br>
      parameters:
      - in: query
        name: include
        schema:
          type: string
          enum:
          - paymentTokens
        required: true
        example: paymentTokens
      - in: query
        name: filter[purpose]
        schema:
          "$ref": "#/components/schemas/PRN"
      responses:
        '200':
          description: All the payment methods with pre-authorized amounts and purpose
            PRNs.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethods"
                  included:
                    type: array
                    items:
                      "$ref": "#/components/schemas/PaymentToken"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-methods/{paymentMethodId}/authorize":
    post:
      tags:
      - Payment Tokens
      operationId: AuthorizePaymentToken
      security:
      - OAuth2:
        - pay:payment-tokens:create
      - OIDC:
        - pay:payment-tokens:create
      summary: Authorize a payment using the payment method
      description: When successful, returns a paymentToken value.
      parameters:
      - in: path
        name: paymentMethodId
        schema:
          type: string
          format: uuid
        required: true
        description: ID of the paymentMethod
        example: 93db55b6-a9ab-4597-a253-49a1718cea0a
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/PaymentTokenCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentToken"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/AmountCannotBeAuthorized"
        '404':
          description: Payment method is unknown
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '405':
          "$ref": "#/components/responses/AuthorizeMethodNotAllowed"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '410':
          "$ref": "#/components/responses/Gone"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          description: Available amount exceeded
          content:
            application/vnd.api+json:
              schema:
                type: object
                description: |
                  Error objects provide additional information about problems encountered while performing an operation.
                  Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                      * `1000`:  generic error
                      * `1001`:  payment processing temporarily unavailable
                      * `1002`:  requested amount exceeds the authorized amount of the provided token
                      * `1003`:  implicit payment methods cannot be modified
                      * `1004`:  payment method rejected by provider
                      * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                      * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for this particular occurrence
                            of the problem.
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: 'A link that leads to further details about
                                this particular occurrence of the problem.

                                '
                        status:
                          type: string
                          description: 'the HTTP status code applicable to this problem,
                            expressed as a string value.

                            '
                        code:
                          type: string
                          description: 'an application-specific error code, expressed
                            as a string value.

                            '
                        title:
                          type: string
                          description: 'A short, human-readable summary of the problem
                            that SHOULD NOT change from occurrence to occurrence of
                            the problem, except for purposes of localization.

                            '
                        detail:
                          type: string
                          description: 'a human-readable explanation specific to this
                            occurrence of the problem. Like title, this field’s value
                            can be localized.

                            '
                        source:
                          type: object
                          description: 'An object containing references to the source
                            of the error.

                            '
                          properties:
                            pointer:
                              type: string
                              description: 'A JSON Pointer [RFC6901] to the associated
                                entity in the request document [e.g. "/data" for a
                                primary data object, or "/data/attributes/title" for
                                a specific attribute].

                                '
                            parameter:
                              type: string
                              description: 'A string indicating which URI query parameter
                                caused the error.

                                '
                        meta:
                          type: object
                          description: 'a meta object containing non-standard meta-information
                            about the error.

                            '
                          properties: {}
                          additionalProperties: true
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/payment-methods":
    get:
      tags:
      - Payment Methods
      operationId: GetPaymentMethods
      security:
      - OAuth2:
        - pay:payment-methods:read
      - OIDC:
        - pay:payment-methods:read
      summary: Get all payment methods for user
      responses:
        '200':
          description: All the payment methods for user.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentMethods"
                  included:
                    type: array
                    items:
                      anyOf:
                      - "$ref": "#/components/schemas/PaymentMethodVendor"
                      - "$ref": "#/components/schemas/PaymentMethodKindMinimal"
                    example:
                    - type: paymentMethodVendor
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: Mastercard
                        slug: mastercard
                        logo:
                          href: "/cms/images/payment-method-vendors/mastercard.png"
                          variants:
                          - dark:
                              href: "/cms/images/payment-method-vendors/mastercard-dark.png"
                    - type: paymentMethodKind
                      id: 33331f72-a672-453c-9d36-d5809ef0ded6
                      attributes:
                        name: SEPA direct debit
                        twoFactor: true
                        fuelcard: false
                        implicit: true
                        vendorPRNs:
                        - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
                        - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
    delete:
      tags:
      - Payment Methods
      operationId: DeletePaymentMethods
      security:
      - OAuth2:
        - pay:payment-methods:delete
      - OIDC:
        - pay:payment-methods:delete
      summary: Delete all user's payment methods.
      description: 'Deletes all payment methods of the current user.

        '
      responses:
        '204':
          description: Payment methods deleted successfully.
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-tokens/{paymentTokenId}":
    get:
      tags:
      - Payment Tokens
      operationId: GetPaymentToken
      security:
      - OAuth2:
        - pay:payment-tokens:read
      - OIDC:
        - pay:payment-tokens:read
      summary: Get a payment token
      parameters:
      - in: path
        name: paymentTokenId
        schema:
          type: string
        required: true
        description: paymentToken ID.
        example: 88db55b6-a9ab-4597-a253-49a1718cea0a
      responses:
        '200':
          description: The requested payment token.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentToken"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
    delete:
      tags:
      - Payment Tokens
      operationId: DeletePaymentToken
      security:
      - OAuth2:
        - pay:payment-tokens:delete
      - OIDC:
        - pay:payment-tokens:delete
      summary: Delete the paymentToken record.
      parameters:
      - in: path
        name: paymentTokenId
        schema:
          type: string
        required: true
        description: paymentToken ID.
        example: 88db55b6-a9ab-4597-a253-49a1718cea0a
      responses:
        '204':
          description: The paymentToken was removed successfully.
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/payment-tokens?filter[valid]=true":
    get:
      tags:
      - Payment Tokens
      operationId: GetPaymentTokens
      security:
      - OAuth2:
        - pay:payment-tokens:read
      - OIDC:
        - pay:payment-tokens:read
      summary: Get all valid payment tokens for user
      description: Get all valid payment tokens for user. Valid means that a token
        was successfully created and is not expired. It might be unusable, for example
        if it is used in a transaction already.
      parameters:
      - in: query
        name: filter[valid]
        schema:
          type: string
          enum:
          - true
        required: true
        example: true
      responses:
        '200':
          description: All valid payment tokens.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PaymentTokens"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/receipts/resend":
    post:
      tags:
      - Payment Transactions
      operationId: ResendReceipt
      security:
      - OAuth2:
        - pay:transactions:receipt
      - OIDC:
        - pay:transactions:receipt
      summary: Resend receipt for a transaction(s)
      description: 'Resends the receipt(s) that has/have already been sent via email
        (when processing the payment). The maximum amount of receipts per request
        is 8.

        '
      parameters:
      - in: header
        name: Accept-Language
        description: Language preference of localized response properties. The full
          standard of RFC 7231 (https://tools.ietf.org/html/rfc7231#section-5.3.5)
          is supported.
        schema:
          type: string
        example: de
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/TransactionIDList"
      responses:
        '200':
          description: Receipt(s) was/were sent again by mail.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/receipts/{transactionID}":
    get:
      tags:
      - Payment Transactions
      operationId: GetReceipt
      security:
      - OAuth2:
        - pay:transactions:receipt
      - OIDC:
        - pay:transactions:receipt
      summary: Get receipt (download,file) for a single transaction as png
      description: 'Provides the receipt that has already been sent via email (when
        processing the payment) as download in png image format.

        '
      parameters:
      - in: path
        name: transactionID
        schema:
          type: string
        required: true
        description: ID of the payment transaction
        example: 88db55b6-a9ab-4597-a253-49a1718cea0a
      - in: query
        name: language
        schema:
          type: string
        required: false
        example: local
        description: |
          (Optional) Specify the language you want the returned receipt to be localized in.
          Returns the receipt in the default language that is available if the specified language is not available.

          Language does not have to be valid language. For example, `language=local` means that the receipt should be displayed
          in the language that is determined to be spoken in the area that the point of intereset at which the receipt has been generated at.

          *Prefer using the `Accept-Language` header if you use this endpoint on an end-user device.*
      responses:
        '200':
          description: Receipt as PNG
          content:
            image/png:
              schema:
                type: string
                format: binary
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/receipts/{transactionID}.{fileFormat}":
    get:
      tags:
      - Payment Transactions
      operationId: GetReceiptByFormat
      security:
      - OAuth2:
        - pay:transactions:receipt
      - OIDC:
        - pay:transactions:receipt
      summary: Get receipt (download,file) for a single transaction in given file
        format
      description: 'Provides the receipt that has already been sent via email (when
        processing the payment) as download in the provided file format.

        '
      parameters:
      - in: path
        name: transactionID
        schema:
          type: string
        required: true
        description: ID of the payment transaction
        example: 88db55b6-a9ab-4597-a253-49a1718cea0a
      - in: path
        name: fileFormat
        schema:
          type: string
          enum:
          - png
          - pdf
        required: true
        description: Format of the expected file
      - in: query
        name: language
        schema:
          type: string
        required: false
        example: local
        description: |
          (Optional) Specify the language you want the returned receipt to be localized in.
          Returns the receipt in the default language that is available if the specified language is not available.

          Language does not have to be valid language. For example, `language=local` means that the receipt should be displayed
          in the language that is determined to be spoken in the area that the point of intereset at which the receipt has been generated at.

          *Prefer using the `Accept-Language` header if you use this endpoint on an end-user device.*
      responses:
        '200':
          description: Receipt as PNG or PDF
          content:
            image/png:
              schema:
                type: string
                format: binary
            application/pdf:
              schema:
                type: string
                format: binary
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/transactions":
    get:
      tags:
      - Payment Transactions
      operationId: ListTransactions
      security:
      - OAuth2:
        - pay:transactions:read
      - OIDC:
        - pay:transactions:read
      summary: List transactions
      description: 'List all transactions for the current user.

        '
      parameters:
      - in: query
        name: page[number]
        schema:
          type: integer
        description: Number of the page that should be returned (sometimes referred
          to as "offset"). Page `0` is the first page.
        example: 2
      - in: query
        name: page[size]
        schema:
          type: integer
        description: Page size of the currently returned page (sometimes referred
          to as "limit").
        example: 5
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - id
          - createdAt
          - updatedAt
          - paymentMethodId
          - paymentMethodKind
          - purposePRN
          - providerPRN
          - fuel.productName
          - fuel.type
          - "-id"
          - "-createdAt"
          - "-updatedAt"
          - "-paymentMethodId"
          - "-paymentMethodKind"
          - "-purposePRN"
          - "-providerPRN"
          - "-fuel.productName"
          - "-fuel.type"
        description: Sort by given attribute, plus and minus are used to indicate
          ascending and descending order.
        example: "-createdAt"
      - in: query
        name: filter[id]
        schema:
          type: string
        description: ID of the payment transaction
        example: 88db55b6-a9ab-4597-a253-49a1718cea0a
      - in: query
        name: filter[createdAt]
        schema:
          type: string
          format: date-time
        description: Time the transaction was created.
        example: '2020-08-14T14:27:08Z'
      - in: query
        name: filter[updatedAt]
        schema:
          type: string
          format: date-time
        description: Time the transaction was last updated.
        example: '2020-08-14T14:27:08Z'
      - in: query
        name: filter[paymentMethodId]
        schema:
          type: string
          format: uuid
        description: Payment method ID of the transaction.
        example: b9e9edbc-204a-4e57-9acd-8ce126d9c5b6
      - in: query
        name: filter[paymentMethodKind]
        schema:
          type: string
        description: Payment method kind of the transaction.
        example: paydirekt
      - in: query
        name: filter[purposePRN]
        schema:
          type: string
        description: PACE resource name of the resource, for which the payment was
          authorized.
        example: prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
      - in: query
        name: filter[providerPRN]
        schema:
          type: string
        description: PACE resource name - referring to the transaction purpose with
          provider details.
        example: prn:provider-name:sites:7652346752:pumps:6
      - in: query
        name: filter[fuel.productName]
        schema:
          type: string
        description: Product name of the fuel that was used in the transaction.
        example: Super Plus
      - in: query
        name: filter[fuel.type]
        schema:
          type: string
        description: Fuel type which was used in the transaction.
        example: ron98
      responses:
        '200':
          description: List of transactions
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Transactions"
                  meta:
                    "$ref": "#/components/schemas/PagingMeta"
                  included:
                    type: array
                    items:
                      anyOf:
                      - "$ref": "#/components/schemas/Discount"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
    post:
      tags:
      - Payment Transactions
      operationId: ProcessPayment
      security:
      - OAuth2:
        - pay:transactions:create
      - OIDC:
        - pay:transactions:create
      summary: Process payment
      description: |
        Process payment and notify user (payment receipt) if transaction is finished successfully.
        The `priceIncludingVAT` and `currency` attributes are required, unless when announcing a transaction in which case those values are copied from the token and any given values are ignored.
        <br><br>
        Only use after approaching (fueling api), otherwise returns `403 Forbidden`.
      parameters:
      - in: query
        name: announce
        schema:
          type: boolean
        description: Announcing the transaction without actually capturing the payment.
          An announced transaction can later be processed only if providing the same
          `paymentToken`, `purposePRN`, and `providerPRN`. By announcing the transaction
          the token is locked to be used only with this transaction. The `priceIncludingVAT`
          and `currency` will be taken from the token, and upon capturing the transaction,
          must be equal or lower than what was announced.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/TransactionCreate"
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Transaction"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/ProcessPaymentForbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '410':
          "$ref": "#/components/responses/Gone"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/transactions.csv":
    get:
      tags:
      - Payment Transactions
      operationId: ListTransactionsCSV
      security:
      - OAuth2:
        - pay:transactions:read
      - OIDC:
        - pay:transactions:read
      summary: List transactions as CSV
      description: 'List all transactions for the current user as csv.

        '
      parameters:
      - in: query
        name: page[number]
        schema:
          type: integer
        description: Number of the page that should be returned (sometimes referred
          to as "offset"). Page `0` is the first page.
        example: 2
      - in: query
        name: page[size]
        schema:
          type: integer
        description: Page size of the currently returned page (sometimes referred
          to as "limit").
        example: 5
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - id
          - createdAt
          - updatedAt
          - paymentMethodId
          - paymentMethodKind
          - purposePRN
          - providerPRN
          - fuel.productName
          - fuel.type
          - "-id"
          - "-createdAt"
          - "-updatedAt"
          - "-paymentMethodId"
          - "-paymentMethodKind"
          - "-purposePRN"
          - "-providerPRN"
          - "-fuel.productName"
          - "-fuel.type"
        description: Sort by given attribute, plus and minus are used to indicate
          ascending and descending order.
        example: "-createdAt"
      - in: query
        name: filter[id]
        schema:
          type: string
        description: ID of the payment transaction
        example: 88db55b6-a9ab-4597-a253-49a1718cea0a
      - in: query
        name: filter[createdAt]
        schema:
          type: string
          format: date-time
        description: Time the transaction was created.
        example: '2020-08-14T14:27:08Z'
      - in: query
        name: filter[updatedAt]
        schema:
          type: string
          format: date-time
        description: Time the transaction was last updated.
        example: '2020-08-14T14:27:08Z'
      - in: query
        name: filter[paymentMethodId]
        schema:
          type: string
          format: uuid
        description: Payment method ID of the transaction.
        example: b9e9edbc-204a-4e57-9acd-8ce126d9c5b6
      - in: query
        name: filter[paymentMethodKind]
        schema:
          type: string
        description: Payment method kind of the transaction.
        example: paydirekt
      - in: query
        name: filter[purposePRN]
        schema:
          type: string
        description: PACE resource name of the resource, for which the payment was
          authorized.
        example: prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
      - in: query
        name: filter[providerPRN]
        schema:
          type: string
        description: PACE resource name - referring to the transaction purpose with
          provider details.
        example: prn:provider-name:sites:7652346752:pumps:6
      - in: query
        name: filter[fuel.productName]
        schema:
          type: string
        description: Product name of the fuel that was used in the transaction.
        example: Super Plus
      - in: query
        name: filter[fuel.type]
        schema:
          type: string
        description: Fuel type which was used in the transaction.
        example: ron98
      responses:
        '200':
          description: List of transactions
          content:
            text/csv:
              example: |
                PaymentModel;CountryCode;MerchantName;TransactionID;TransactionIDb58;UserID;PaymentMethodKind;PaymentMethodVendorName;Currency;PriceIncludingVAT;PriceExcludingVAT;VatAmount;VatRate;CreatedAt;UpdatedAt;FuelType;FuelAmount;PricePerUnit;PumpID;GasStationID;TwoFactorType
                reseller;DE;Dummy Merchant;794f9405-e96d-4a1e-b081-be6d74e51c8b;UQjiV72bwY3Y6kxChvBD1;e34304553f1ee1d82ba7df9387806888a69d1db1;creditcard;visa;EUR;23.37;13.37;3.37;0.19;%s;%s;ron95e10;55.37;1.337;0e6a2c66-78ee-434f-9433-0fdb08686ec5;e3211b77-03f0-4d49-83aa-4adaa46d95ae;fingerprint
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/transactions/{transactionId}":
    get:
      tags:
      - Payment Transactions
      operationId: GetTransaction
      security:
      - OAuth2:
        - pay:transactions:read
      - OIDC:
        - pay:transactions:read
      summary: Get a transaction
      description: |
        Endpoint for fetching information about a single transaction. Only completed transactions can be returned.
        If `update=longPolling` is set, the following applies:
        In case the transaction is not yet completed the call may be delayed 20s until a response can be given. If the client got this URL as a response to the Pre Auth process the call is save to retry. In case the transaction was canceled by the client an answer will still be delayed but always returns `404`, therefore the client has to remember, that the transaction was canceled.
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
        description: transaction ID.
        example: c3f037ea-492e-4033-9b4b-4efc7beca16c
      - in: query
        name: update
        schema:
          type: string
          enum:
          - longPolling
        description: |
          Specify this parameter if you want to enable long-polling on this endpoint. Long-polling means that the endpoint will wait a fixed set of seconds (20s)
          before returning the result.
        example: longPolling
      responses:
        '200':
          description: The requested payment transaction.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Transaction"
                  included:
                    type: array
                    items:
                      anyOf:
                      - "$ref": "#/components/schemas/Discount"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '410':
          "$ref": "#/components/responses/Gone"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/transactions/contracts/{contractID}":
    get:
      tags:
      - Payment Transactions
      operationId: ListTransactionsForContractID
      security:
      - OAuth2:
        - pay:transactions:{contractID}:read
      summary: List transactions for contract
      description: 'List all transactions for the given contractID within the given
        time frame.

        '
      parameters:
      - in: path
        name: contractID
        schema:
          type: string
        required: true
        description: ContractID of the transactions.
        example: PACE-CONTRACT-1234
      - in: query
        name: page[number]
        schema:
          type: integer
        description: Number of the page that should be returned (sometimes referred
          to as "offset"). Page `0` is the first page.
        example: 2
      - in: query
        name: page[size]
        schema:
          type: integer
        description: Page size of the currently returned page (sometimes referred
          to as "limit").
        example: 5
      - in: query
        name: date_from
        schema:
          type: string
          format: date-time
        required: true
        description: Start date of the period for which transactions should be returned.
        example: '2020-01-01T00:00:00Z'
      - in: query
        name: date_to
        schema:
          type: string
          format: date-time
        required: true
        description: End date of the period for which transactions should be returned.
        example: '2020-01-01T00:00:00Z'
      responses:
        '200':
          description: List of transactions for  given contractID within  given time
            frame
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Transactions"
                  meta:
                    "$ref": "#/components/schemas/PagingMeta"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/transactions/contracts/partners/{partner}":
    get:
      tags:
      - Payment Transactions
      operationId: ListTransactionsForPartner
      security:
      - OAuth2:
        - pay:transactions:{partner}:read
      summary: List transactions for the given partner
      description: 'List all transactions for the given partner within the given time
        frame.

        '
      parameters:
      - in: path
        name: partner
        schema:
          type: string
        required: true
        description: Partner name for which the transactions shall be returned.
        example: pace
      - in: query
        name: page[number]
        schema:
          type: integer
        description: Number of the page that should be returned (sometimes referred
          to as "offset"). Page `0` is the first page.
        example: 2
      - in: query
        name: page[size]
        schema:
          type: integer
        description: Page size of the currently returned page (sometimes referred
          to as "limit").
        example: 5
      - in: query
        name: date_from
        schema:
          type: string
          format: date-time
        required: true
        description: Start date of the period for which transactions should be returned.
        example: '2020-01-01T00:00:00Z'
      - in: query
        name: date_to
        schema:
          type: string
          format: date-time
        required: true
        description: End date of the period for which transactions should be returned.
        example: '2020-01-01T00:00:00Z'
      responses:
        '200':
          description: List of transactions for partner within the given time frame.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/TransactionsShort"
                  meta:
                    "$ref": "#/components/schemas/PagingMeta"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '409':
          "$ref": "#/components/responses/Conflict"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
      deprecated: true
  "/transactions/{transactionId}/cancel":
    post:
      tags:
      - Payment Transactions
      operationId: CancelPreAuthPayment
      security:
      - OAuth2:
        - pay:transactions:cancel
      - OIDC:
        - pay:transactions:cancel
      summary: Cancel PreAuth payment
      description: |
        PreAuth payments can be canceled in case the token was not used already. In addition to the transaction, the payment token will be revoked as well.
        <br><br>
        * Canceling the transaction and or the token is only permitted if the transaction is still open, otherwise a `403 Forbidden` will be returned.
        * In case the transaction and token are already canceled and the request is repeated, the result will still be `204 No Content`.
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
        description: transaction ID.
        example: c3f037ea-492e-4033-9b4b-4efc7beca16c
      responses:
        '204':
          description: Canceled
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
components:
  schemas:
    Currency:
      type: string
      example: EUR
      description: Currency as specified in ISO-4217.
    PRN:
      type: string
      description: When provided allows filtering by PACE resource name(s). Only payment
        methods suitable for the given purpose are returned.
      example: prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
    PaymentMethodKinds:
      type: array
      items:
        "$ref": "#/components/schemas/PaymentMethodKind"
    PaymentMethodKind:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethodKind
        id:
          type: string
          description: one of sepa, creditcard, paypal, paydirekt, dkv, applepay,
            ...
        attributes:
          type: object
          properties:
            name:
              type: string
              description: localized name
              example: SEPA direct debit
            currencies:
              type: array
              items:
                type: string
              description: Currencies supported by payment method kind
              example:
              - EUR
              - PLN
            twoFactor:
              type: boolean
              description: indicates if the payment method kind requires two factors
                later on
              example: true
            fuelcard:
              type: boolean
              description: Indicates whether the payment method is a fuel card. Fuelcard
                `no` means no.
              example: false
            implicit:
              type: boolean
              description: |
                Indicates whether the payment method can be onboarded/modified. Implict `true` means no. Otherwise yes.
                Most payment method kinds are no implicit, i.e., `implicit=false`.
                This field is optional and if not present should be assumed to indicate `implicit=false`.
              example: true
            vendorPRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) to payment method vendors
              example:
              - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
              - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
            dataPrivacy:
              type: object
              description: data privacy information
              properties:
                hint:
                  type: object
                  description: Localized hint that data privacy terms apply. The hint
                    comes formatted in multiple ways, which are all equally valid
                    if given. Additional formats might be added in the future.
                  properties:
                    markdown:
                      type: string
                      description: Hint formatted as markdown. Contains only links
                        to the reference <code>terms</code>. Does not contain other
                        links. Other than that, only contains markdown syntax for
                        <a href="https://daringfireball.net/projects/markdown/syntax#p">Paragraphs
                        and Line Breaks</a> and <a href="https://daringfireball.net/projects/markdown/syntax#em">Emphasis</a>.
                      example: Please read the [payment terms][terms] _carefully_.
                terms:
                  type: object
                  description: Localized data privacy terms. The terms come formatted
                    in multiple ways, which are all equally valid if given. Additional
                    formats might be added in the future.
                  properties:
                    markdown:
                      type: string
                      description: Terms formatted as markdown. Does not contain external
                        resources like images.
                      example: |
                        # Terms & Conditions

                        Lorem ipsum ...
            vendors:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: ID of the payment method vendor.
                    example: 3af4b4a7-33fc-4930-9c2d-6eea7e488398
                  slug:
                    type: string
                    example: visa
                  name:
                    type: string
                    example: VISA
                  logo:
                    type: object
                    properties:
                      href:
                        type: string
                        example: "/cms/images/payment-method-vendors/visa.png"
                      variants:
                        type: array
                        description: variants of the vendor's logo
                        items:
                          type: object
                          properties:
                            href:
                              type: string
                    x-examples:
                      vendorLogo-example:
                        href: "/cms/images/payment-method-vendors/visa.png"
                        variants:
                        - href: "/cms/images/payment-method-vendors/mastercard-dark.png"
                        - href: "/cms/images/payment-method-vendors/mastercard-light.png"
                  paymentMethodKindId:
                    type: string
                    example: creditcard
    PaymentMethod:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethod
        id:
          type: string
          format: uuid
          description: Payment method ID
          example: d7101f72-a672-453c-9d36-d5809ef0ded6
        attributes:
          type: object
          properties:
            kind:
              type: string
              description: one of sepa, creditcard, paypal, paydirekt, dkv, applepay,
                ...
              readOnly: true
            status:
              type: string
              enum:
              - created
              - verified
              - pending
              - unacceptable
              example: verified
              description: |
                The desired status for a payment method is `verified`, this means the method is ready to use.
                A payment method that has the status `created` has yet to be verified. This is the case for payment methods,
                which have an asynchronous verification process, e.g., paydirekt (waiting for an email).
              readOnly: true
            identificationString:
              type: string
              example: DEUTSCHEBANK XX 3000
              readOnly: true
            vendorPRN:
              type: string
              description: PACE resource name(s) to payment method vendor
              example: prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
              readOnly: true
            twoFactor:
              type: boolean
              description: indicates if the payment method kind requires two factors
                later on
              example: true
              readOnly: true
            approvalURL:
              type: string
              format: url
              description: URL for the user to call in order to approve this payment
                method.
              readOnly: true
            alias:
              type: string
              description: Customer chosen alias for the payment method
              example: My wifes card
            implicit:
              type: boolean
              description: Implicit (`true`) payment methods are read-only and cannot
                be deleted, e.g., ApplePay
              example: false
              readOnly: true
            pacePay:
              type: boolean
              description: Identifies if the payment method is a PACE payment method
                (`true`) or a broker method (`false`)
              example: true
              readOnly: true
            mandatoryAuthorisationAttributes:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    example:
                    - vin
                    - mileage
                  maxLength:
                    type: integer
                  regex:
                    type: string
                description: Mandatory transaction attribute validator
                example:
                - name: vin
                  maxLength: 8
                  regex: "[A-Z][0-9]+"
                - name: mileage
                  maxLength: 8
                  regex: "[0-9]+"
                - name: numberPlate
                  maxLength: 8
                  regex: "[A-Z][0-9]+"
            expiry:
              type: string
              format: date-time
              example: '2006-01-02T15:04:05Z'
              description: Expiry date of the payment method. If empty or not present
                the payment method does not have an expiry date.
            managed:
              type: boolean
              description: Managed (`true`) payment methods are read-only and cannot
                be deleted other than by the client (oauth/oidc) that created them.
              example: false
              readOnly: true
        meta:
          readOnly: true
          type: object
          properties:
            merchantName:
              type: string
              description: Merchant name if the request was made in a way that a merchant
                name can be determined. For example if requesting payment methods
                for a specific gas station, it is the merchant name at that gas station.
              example: PACE
        relationships:
          readOnly: true
          type: object
          properties:
            paymentMethodVendor:
              "$ref": "#/components/schemas/PaymentMethodVendorRelationship"
            paymentMethodKind:
              "$ref": "#/components/schemas/PaymentMethodKindRelationship"
            paymentTokens:
              type: object
              properties:
                data:
                  type: array
                  items:
                    "$ref": "#/components/schemas/PaymentTokensRelationship"
        links:
          readOnly: true
          type: object
          properties:
            authorize:
              type: object
              properties:
                href:
                  type: string
                  format: url
                  example:
                  - "/pay/payment-methods/6b071c65-ef8b-4794-8745-e53728b7617f/authorize"
                  - "/pay/payment-method-kinds/applepay/authorize"
                meta:
                  type: object
                  properties:
                    authFlow:
                      type: string
                      enum:
                      - token-provided
                      - method-onboarded
    PaymentMethods:
      type: array
      items:
        "$ref": "#/components/schemas/PaymentMethod"
    PaymentToken:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentToken
        id:
          type: string
          description: Payment Token ID
          example: 33331f72-a672-453c-9d36-d5809ef0ded6
        attributes:
          type: object
          properties:
            amount:
              type: number
              format: decimal
              example: 23
              description: The amount that this token represents.
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            value:
              type: string
              example: 12c52345c1x34
              description: paymentToken value. Format might change (externally provided
                - by payment provider)
            validUntil:
              type: string
              format: date-time
              description: The datetime (iso8601) after which the token is no longer
                valid. May not be provided.
            accountPRN:
              type: string
              description: PACE resource name of the accountPRN that this is being
                charged to.
              example:
              - prn:pay:accounts:pace
            purposePRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) of one or multiple resources, for
                which the payment was authorized.
              example:
              - prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
              - prn:cms:fuels:ron95
        relationships:
          readOnly: true
          type: object
          properties:
            paymentMethod:
              "$ref": "#/components/schemas/PaymentMethodRelationship"
    PaymentTokens:
      type: array
      items:
        "$ref": "#/components/schemas/PaymentToken"
    PaymentMethodVendor:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethodVendor
        id:
          type: string
          format: uuid
          example: 33331f72-a672-453c-9d36-d5809ef0ded6
        attributes:
          type: object
          properties:
            name:
              type: string
              example: Mastercard
              description: Human-readable version of the vendor name. Should be used
                for display.
            slug:
              type: string
              example: mastercard
              description: Short and lowercased version. Should NOT be used for display.
            logo:
              type: object
              properties:
                href:
                  type: string
                  example: "/cms/images/payment-method-vendors/mastercard.png"
                variants:
                  type: array
                  items:
                    type: object
                    properties:
                      dark:
                        type: object
                        properties:
                          href:
                            type: string
                            example: "/cms/images/payment-method-vendors/mastercard-dark.png"
    PaymentMethodVendorRelationship:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              enum:
              - paymentMethodVendor
            id:
              type: string
              format: uuid
              example: 33331f72-a672-453c-9d36-d5809ef0ded6
    PaymentMethodKindMinimal:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethodKind
        id:
          type: string
          format: uuid
          example: 33331f72-a672-453c-9d36-d5809ef0ded6
        attributes:
          type: object
          properties:
            name:
              type: string
              description: localized name
              example: SEPA direct debit
            currencies:
              type: array
              items:
                type: string
              description: Currencies supported by payment method kind
              example:
              - EUR
              - PLN
            twoFactor:
              type: boolean
              description: indicates if the payment method kind requires two factors
                later on
              example: true
            fuelcard:
              type: boolean
              description: Indicates whether the payment method is a fuel card. Fuelcard
                `no` means no.
              example: false
            implicit:
              type: boolean
              description: |
                Indicates whether the payment method can be onboarded/modified. Implict `true` means no. Otherwise yes.
                Most payment method kinds are no implicit, i.e., `implicit=false`.
                This field is optional and if not present should be assumed to indicate `implicit=false`.
              example: true
            vendorPRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) to payment method vendors
              example:
              - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
              - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
    PaymentMethodKindRelationship:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              enum:
              - paymentMethodKind
            id:
              type: string
              format: uuid
              example: 33331f72-a672-453c-9d36-d5809ef0ded6
    PaymentTokensRelationship:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentToken
        id:
          type: string
          format: uuid
          example: 33331f72-a672-453c-9d36-d5809ef0ded6
    PaymentMethodRelationship:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              enum:
              - paymentMethod
            id:
              type: string
              format: uuid
              example: 33331f72-a672-453c-9d36-d5809ef0ded6
    PaymentMethodSepaCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - iban
          - address
          properties:
            kind:
              type: string
              enum:
              - sepa
            iban:
              type: string
              example: DE89 3704 0044 0532 0130 00
              description: International Bank Account Number (as defined in ISO 13616:2007),
                blanks are stripped
            title:
              type: string
              example: Prof. Dr.
              description: Legal title of account owner.
            firstName:
              type: string
              example: Jon
              description: Legal name of account owner (in case of an individual person)
            lastName:
              type: string
              example: Smith
              description: Legal first name of account owner (in case of an individual
                person)
            company:
              type: string
              example: Clean House GmbH
              description: Legal name of the company in (case of a company account,
                firstName and lastName are ignored in that case)
            address:
              type: object
              description: |
                Residential address of the company or individual. Mailing may used in cases, where the payment provider has issues
                processing the payment.
              required:
              - street
              - houseNo
              - postalCode
              - city
              - countryCode
              properties:
                street:
                  type: string
                  example: Haid-und-Neu-Str.
                houseNo:
                  type: string
                  example: '18'
                postalCode:
                  type: string
                  example: '76131'
                city:
                  type: string
                  example: Karlsruhe
                countryCode:
                  type: string
                  example: DE
                  description: Country code in as specified in ISO 3166-1.
            email:
              type: string
              format: email
              example: jon.smith@example.com
              description: Email address
    PaymentMethodDKVCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - cardIdentifier
          properties:
            kind:
              type: string
              enum:
              - dkv
            PAN:
              type: string
              maxLength: 17
              minLength: 17
              example: '70431021000100495'
              description: 'Identifier or PAN (Primary Account Number) representing
                the DKV Card. The identifier is payment provider specific and provided
                by the payment provider.

                '
            track2:
              type: string
              maxLength: 37
              minLength: 37
              example: 70431021000100495=2110009000000000000
              description: Track 2 data of payment card.
            expiry:
              type: string
              format: date-time
              description: The date the card is expiring
              example: '2026-12-02T15:04:05Z'
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodHoyerCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - cardIdentifier
          properties:
            kind:
              type: string
              enum:
              - hoyer
            cardNumber:
              type: string
              maxLength: 6
              minLength: 6
              example: '451049'
              description: 'Identifier representing the Hoyer Card number. The identifier
                is payment provider specific and provided by the payment provider.

                '
            pin:
              type: string
              minLength: 4
              maxLength: 4
              example: '0000'
              description: Personal identification number is a security code for verifying
                the user's identity.
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodZGMCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - cardIdentifier
          properties:
            kind:
              type: string
              enum:
              - zgm
            cardNumber:
              type: string
              maxLength: 8
              minLength: 4
              example: '80905'
              description: 'Identifier representing the Zieglmeier Card number. The
                identifier is payment provider specific and provided by the payment
                provider.

                '
            pin:
              type: string
              minLength: 4
              maxLength: 4
              example: '0000'
              description: Personal identification number is a security code for verifying
                the user's identity.
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodRoadrunnerCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - cardIdentifier
          properties:
            kind:
              type: string
              enum:
              - roadrunner
            cardNumber:
              type: string
              minLength: 19
              maxLength: 19
              example: '7896461537100000014'
              description: 'Identifier representing the Roadrunner Card number. The
                identifier is payment provider specific and provided by the payment
                provider.

                '
            pin:
              type: string
              minLength: 4
              maxLength: 4
              example: '0000'
              description: Personal identification number is a security code for verifying
                the user's identity.
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodLogpayCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          properties:
            kind:
              type: string
              enum:
              - logpay
            PAN:
              type: string
              maxLength: 19
              minLength: 19
              example: '7078421059999980853'
              description: 'Identifier or PAN (Primary Account Number) representing
                the Logpay Card. The identifier is payment provider specific and provided
                by the payment provider.

                '
            expiry:
              type: string
              format: date-time
              description: The date the card is expiring
              example: '2026-12-02T15:04:05Z'
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodLogpaysandboxCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          properties:
            kind:
              type: string
              enum:
              - logpaysandbox
            PAN:
              type: string
              maxLength: 19
              minLength: 19
              example: '7078421059999980853'
              description: 'Identifier or PAN (Primary Account Number) representing
                the Logpay Card. The identifier is payment provider specific and provided
                by the payment provider.

                '
            expiry:
              type: string
              format: date-time
              description: The date the card is expiring
              example: '2026-12-02T15:04:05Z'
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodTFCSandboxCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          properties:
            kind:
              type: string
              enum:
              - tfcsandbox
            PAN:
              type: string
              maxLength: 19
              minLength: 19
              example: '7078421059999980853'
              description: 'Identifier or PAN (Primary Account Number) representing
                the TFC Card. The identifier is payment provider specific and provided
                by the payment provider.

                '
            expiry:
              type: string
              format: date-time
              description: The date the card is expiring
              example: '2026-12-02T15:04:05Z'
            managed:
              type: boolean
              example: true
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodEssoCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08ah
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          properties:
            kind:
              type: string
              enum:
              - esso
            pan:
              type: string
              maxLength: 19
              minLength: 19
              example: '7078421059999980853'
              description: 'Identifier or PAN (Primary Account Number) representing
                the Esso Card. The identifier is payment provider specific and provided
                by the payment provider.

                '
            pin:
              type: string
              minLength: 4
              maxLength: 4
              example: '0000'
              description: Personal identification number is a security code for verifying
                the user's identity.
            expiry:
              type: string
              format: date-time
              description: The date the card is expiring
              example: '2026-12-02T15:04:05Z'
            international:
              type: boolean
              example: false
              description: Specify if the card can be used nationally (bound to issuing
                country) or internationally. If "true" the card can be used in every
                country (i.e., internationally).
    PaymentMethodOMVCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - PAN
          properties:
            kind:
              type: string
              enum:
              - omv
            PAN:
              type: string
              maxLength: 17
              minLength: 17
              example: '710105299999000292'
              description: Identifier or PAN (Primary Account Number) representing
                the OMV Card. The identifier is payment provider specific and provided
                by the payment provider.
            track1:
              type: string
              description: Track 1 data of payment card.
            track2:
              type: string
              maxLength: 37
              minLength: 37
              example: 710105299999000292=2112009000000000000
              description: Track 2 data of payment card.
            expiry:
              type: string
              format: YYMM
              minLength: 4
              maxLength: 4
              pattern: "^\\d{2}(0[0-9]|1[012])$"
              description: The date the card is expiring in YYMM format.
              example: '2112'
            managed:
              type: boolean
              example: false
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodTFCCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - cardIdentifier
          properties:
            kind:
              type: string
              enum:
              - tfc
            cardNumber:
              type: string
              maxLength: 9
              minLength: 9
              example: '625651136'
              description: 'Identifier representing The Fuel Company Card number.
                The identifier is payment provider specific and provided by the payment
                provider.

                '
            pin:
              type: string
              minLength: 4
              maxLength: 4
              example: '0000'
              description: Personal identification number is a security code for verifying
                the user's identity.
            expiry:
              type: string
              format: YYMM
              minLength: 4
              maxLength: 4
              pattern: "^\\d{2}(0[0-9]|1[012])$"
              description: The date the card is expiring in YYMM format.
              example: '2612'
            managed:
              type: boolean
              example: false
              default: false
              description: Indicates whether this payment method should be managed
                by the creating client, i.e., no other client can modify or delete
                this method.
    PaymentMethodCreditCardCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - cardToken
          properties:
            kind:
              type: string
              enum:
              - creditcard
            cardToken:
              type: string
              example: 9bd40536-9a8d-465f-b91d-f0a8b145987c
              description: |
                Token representing the credit card information. The token is payment provider specific and provided by the payment provider.
                Example: In-Browser, the Payment Provider Credit Card Widget will return a token after adding a credit card. This token should be
                used here.
    PaymentMethodPayPalCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - successURL
          - failureURL
          - canceledURL
          properties:
            kind:
              type: string
              enum:
              - paypal
            successURL:
              type: string
              format: url
              example: https://example.com/success
              description: URL that the user is redirected to after successfully creating
                the payment method in the backend. Must be provided if the backend
                should create the Billing Agreement.
            failureURL:
              type: string
              format: url
              example: https://example.com/failure
              description: URL that the user is redirected to after creating the payment
                method in the backend failes. Must be provided if the backend should
                create the Billing Agreement.
            canceledURL:
              type: string
              format: url
              example: https://example.com/canceled
              description: URL that the user is redirected to after creating the payment
                method in the backend was canceled by the user. Must be provided if
                the backend should create the Billing Agreement.
    PaymentMethodGiropayCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 127b78f3-6ba5-432b-b131-ed9c38920d0d
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - successURL
          - failureURL
          - canceledURL
          properties:
            kind:
              type: string
              enum:
              - giropay
            successURL:
              type: string
              format: url
              description: URL that the user is redirected to after successfully creating
                the payment method in the backend.
            failureURL:
              type: string
              format: url
              description: URL that the user is redirected to after creating the payment
                method in the backend fails.
            canceledURL:
              type: string
              format: url
              description: URL that the user is redirected to after creating the payment
                method in the backend was canceled by the user.
    PaymentMethodPayDirektCreate:
      type: object
      required:
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The ID of this payment method.
          example: 127b78f3-6ba5-432b-b131-ed9c38920d0d
        type:
          type: string
          enum:
          - paymentMethod
        attributes:
          type: object
          required:
          - kind
          - successURL
          - failureURL
          - canceledURL
          properties:
            kind:
              type: string
              enum:
              - paydirekt
            successURL:
              type: string
              format: url
              description: URL that the user is redirected to after successfully creating
                the payment method in the backend.
            failureURL:
              type: string
              format: url
              description: URL that the user is redirected to after creating the payment
                method in the backend fails.
            canceledURL:
              type: string
              format: url
              description: URL that the user is redirected to after creating the payment
                method in the backend was canceled by the user.
    PaymentTokenCreateApplePay:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - paymentToken
        id:
          type: string
          format: uuid
          description: Unique ID of the new paymentToken.
          example: f4267aea-2567-4a3c-934d-b8355a76abe9
        attributes:
          type: object
          required:
          - currency
          - amount
          - purposePRNs
          - applePay
          properties:
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            amount:
              type: number
              format: decimal
              example: 65.49
            purposePRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) of one or multiple resources, for
                which the payment should be authorized.
              example:
              - prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
              - prn:cms:fuels:ron95
            discountTokens:
              type: array
              items:
                type: string
                description: Discount token that should be applied when authorizing
                  this token. (Obtained by querying fueling service gasStation->pump->discount)
                example: prn:discount:tokens:f7aa2664-bcfa-4e23-967d-ecd6596b73a9
            twoFactor:
              type: object
              description: The code and method for two factor authentication, if required
                by the payment method
              properties:
                otp:
                  type: string
                  description: OTP (One time password) for the authorization.
                  example: '366382'
                method:
                  type: string
                  description: A single name for the 2fa e.g. `face-id`, `fingerprint`,
                    `biometry`, `password`, `pin`
            applePay:
              type: object
              properties:
                paymentData:
                  type: object
                  properties:
                    version:
                      type: string
                      example: EC_v1
                    data:
                      type: string
                      example: xPE3fXmvym6529AxxQw2PN6czhxoXj2ylfHnJdiRdZktiMdDe2.........
                    signature:
                      type: string
                      example: MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCAB......
                    familyName:
                      type: string
                      example: Schoenbeck
                    header:
                      type: object
                      properties:
                        ephemeralPublicKey:
                          type: string
                          example: MFkwEw.......
                        publicKeyHash:
                          type: string
                          example: qfj/gQGrF0K6y2EhKDoYUhdi84JEg.....
                        transactionId:
                          type: string
                          example: 58afcabaa130747ca92eeaff362......
                paymentMethod:
                  type: object
                  properties:
                    displayName:
                      type: string
                      example: Visa 0492
                    network:
                      type: string
                      example: Visa
                    type:
                      type: string
                      example: debit
                transactionIdentifier:
                  type: string
                  example: 259E4924A74239E0A10DEFD065B2250412D28B9A5739925E43640B25668F61F5
    ApplePaySession:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - applePayPaymentSession
        id:
          type: string
          format: uuid
          description: Unique ID of the new apple pay session.
          example: f4267aea-2567-4a3c-934d-b8355a76abe9
        attributes:
          type: object
          required:
          - merchantIdentifier
          properties:
            epochTimestamp:
              type: integer
              example: 1555507053169
              description: UNIX timestamp
            expiresAt:
              type: integer
              example: 1555507053169
              description: UNIX timestamp
            merchantSessionIdentifier:
              type: string
              example: SSH2EAF8AFAEAA94DEEA898162A5DAFD36E_916523AAED1343F....E12BEE
              description: Session identification.
            merchantIdentifier:
              type: string
              example: BD62FEB196874511C22DB28A9E14A89E3534C93194F73EA417EC566368D391EB
              description: Merchant identifier
            domainName:
              type: string
              example: pay.example.org
              description: Shop associated domain.
            displayName:
              type: string
              example: Your eCommerce Shop DO NOT LOCALIZE
              description: Display name of the shop/merchant.
            signature:
              type: string
              example: 308006092a864886f7...8cc030ad3000000000000
              description: Session signature
            nonce:
              type: string
              example: AAKJHJGS83732
              description: Nonce
            operationalAnalyticsIdentifier:
              type: string
    RequestApplePaySession:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - applePayPaymentSession
        id:
          type: string
          format: uuid
          description: Unique ID of the new apple pay session.
          example: f4267aea-2567-4a3c-934d-b8355a76abe9
        attributes:
          type: object
          required:
          - validationURL
          properties:
            validationURL:
              type: string
              format: url
              example: apple-pay-gateway.apple.com/paymentservices
              description: Schemaless (no http/https!) validation URL obtained by
                the client through communicating directly with Apple Pay.
    PaymentTokenCreateGooglePay:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - paymentToken
        id:
          type: string
          format: uuid
          description: Unique ID of the new paymentToken.
          example: f4267aea-2567-4a3c-934d-b8355a76abe9
        attributes:
          type: object
          required:
          - currency
          - amount
          - purposePRNs
          - googlePay
          properties:
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            amount:
              type: number
              format: decimal
              example: 65.49
            purposePRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) of one or multiple resources, for
                which the payment should be authorized.
              example:
              - prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
              - prn:cms:fuels:ron95
            discountTokens:
              type: array
              items:
                type: string
                description: Discount token that should be applied when authorizing
                  this token. (Obtained by querying fueling service gasStation->pump->discount)
                example: prn:discount:tokens:f7aa2664-bcfa-4e23-967d-ecd6596b73a9
            twoFactor:
              type: object
              description: The code and method for two factor authentication, if required
                by the payment method
              properties:
                otp:
                  type: string
                  description: OTP (One time password) for the authorization.
                  example: '366382'
                method:
                  type: string
                  description: A single name for the 2fa e.g. `face-id`, `fingerprint`,
                    `biometry`, `password`, `pin`
            googlePay:
              type: object
              description: The encrypted data received from GooglePay
              properties:
                version:
                  type: string
                  example: ECv1
                signature:
                  type: string
                  example: MEUCIFWTRWUZAOM5nfJC79FtJm56olnbwG4H5uWWxAUWA...
                paymentData:
                  type: object
                  properties:
                    encryptedMessage:
                      type: string
                      example: 8nxjB9mr2tWZeDRQRcGN91UUnb7AioGp3oRo8kmQ6lyvJZiqD7PJlbR...
                    ephemeralPublicKey:
                      type: string
                      example: BGH3fRFdoAobYrAlxnZOCYzkH84Cna92IZxtgsU36CMDaqSaDYb9/Ls...
                    tag:
                      type: string
                      example: nvmOUNpnOTZULLhMxT/hWCHzH/4f7gGpfvQgwl3p8ng
    PaymentTokenCreate:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - paymentToken
        id:
          type: string
          format: uuid
          description: Unique ID of the new paymentToken.
          example: f4267aea-2567-4a3c-934d-b8355a76abe9
        attributes:
          type: object
          required:
          - currency
          - amount
          - purposePRNs
          properties:
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            amount:
              type: number
              format: decimal
              example: 65.49
            allowPartialAmount:
              type: boolean
              example: false
              description: Set this flag to `true` if you accept the authorized amount
                to be lower than the requested amount.
            purposePRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) of one or multiple resources, for
                which the payment should be authorized.
              example:
              - prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6
              - prn:cms:fuels:ron95
            discountTokens:
              type: array
              items:
                type: string
                description: Discount token that should be applied when authorizing
                  this token. (Obtained by querying fueling service gasStation->pump->discount)
                example: prn:discount:tokens:f7aa2664-bcfa-4e23-967d-ecd6596b73a9
            twoFactor:
              type: object
              description: The code and method for two factor authentication, if required
                by the payment method
              properties:
                otp:
                  type: string
                  description: OTP (One time password) for the authorization.
                  example: '366382'
                method:
                  type: string
                  description: A single name for the 2fa e.g. `face-id`, `fingerprint`,
                    `biometry`, `password`, `pin`
    RequestPaymentMethodModel:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - paymentMethod
        id:
          type: string
          format: uuid
          description: Payment method UUID
          example: d7101f72-a672-453c-9d36-d5809ef0ded6
        attributes:
          type: object
          properties:
            poiID:
              type: string
              description: Point of Interest ID
              example: c3f037ea-492e-4033-9b4b-4efc7beca16c
    PaymentMethodModel:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethod
        id:
          type: string
          format: uuid
          description: Payment method UUID
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        attributes:
          type: object
          properties:
            paymentMethodModel:
              type: string
              description: The model of the Payment Method.
              example: broker
    TransactionCreate:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - transaction
        id:
          type: string
          format: uuid
          description: ID of the new transaction.
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        attributes:
          type: object
          required:
          - paymentToken
          - purposePRN
          - providerPRN
          properties:
            paymentToken:
              type: string
              description: Payment token value
              example: 12c52345c1x34
            priceIncludingVAT:
              type: number
              format: decimal
              example: 69.34
            priceExcludingVAT:
              type: number
              format: decimal
              example: 58.27
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 11.07
                rate:
                  type: number
                  format: decimal
                  example: 0.19
                  description: "*Important:* Vat rates have to be between 0.00 and
                    1.00 and not have a decimal precision beyoned 2, i.e., no rate
                    of 0.119999999\n"
            purposePRN:
              type: string
              description: PACE resource name - referring to the transaction purpose
              example: prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6:pumps:f86c1f11-687e-4a85-b16f-3f82a16f3243
            issuerPRN:
              type: string
              description: PACE resource name - referring to the transaction issuer
              example: prn:poi:apps:c30bce97-b732-4390-af38-1ac6b017aa4c
            providerPRN:
              type: string
              description: PACE resource name - referring to the transaction purpose
                with provider details
              example: prn:provider-name:sites:7652346752:pumps:6
            merchantPRN:
              type: string
              description: PACE resource name - referring to the transaction's merchant
              example: prn:merchant:merchants:b8c60e3a-3771-4c48-8666-3cbbb42ffdc2
            vin:
              type: string
              description: Vehicle identification number
              example: 1B3EL46R36N102271
            fuelAmount:
              type: number
              description: Fuel amount
              format: decimal
              example: 55.12
            fuelProductName:
              type: string
              description: Product name
              example: ron98
            fuel:
              "$ref": "#/components/schemas/Fuel"
            mileage:
              type: integer
              description: Current mileage in meters
              example: 66435000
            numberPlate:
              type: string
              description: Number plate of the car
              example: KA AM1234
            productFlow:
              type: string
              description: The given productFlow (e.g. preAuth, postPay)
              example: preAuth
            unattended:
              type: boolean
              example: false
              description: Set to true if the payment is for an unattended process
            metadata:
              type: array
              items:
                "$ref": "#/components/schemas/TransactionMetadata"
    TransactionMetadata:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
    TransactionIDList:
      type: object
      required:
      - type
      - attributes
      properties:
        type:
          type: string
          enum:
          - transaction
        id:
          type: string
          format: uuid
        attributes:
          type: object
          required:
          - list
          properties:
            list:
              type: array
              minItems: 1
              maxItems: 8
              description: The maximum amount of receipts that can be send is 8.
              items:
                type: string
                description: ID of the transactionID.
                example: c3f037ea-492e-4033-9b4b-4efc7beca16c
    Fuel:
      type: object
      properties:
        pumpNumber:
          type: integer
          description: Number of the pump used for fueling, i.e., the actual number
            that is being displayed to the customer
          example: 1
        unit:
          type: string
          description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
            `kilogram`'
          example: liter
        pricePerUnit:
          type: number
          format: decimal
          description: Price per unit (with three decimal places)
          example: 1.112
        amount:
          type: number
          format: decimal
          description: Fuel amount in provided unit
          example: 55.12
        productName:
          type: string
          description: Product Name of the current fuel.productName
          example: Super Plus
        type:
          type: string
          description: Fuel type for cars, based on the EU fuel marking
          example: ron98
          enum:
          - ron98
          - ron98e5
          - ron95e10
          - diesel
          - e85
          - ron95e5
          - ron100
          - dieselGtl
          - dieselB0
          - dieselB7
          - dieselB15
          - dieselPremium
          - dieselSynthetic
          - syntheticDiesel
          - lpg
          - cng
          - lng
          - h2
          - truckDiesel
          - adBlue
          - truckAdBlue
          - truckDieselPremium
          - truckLpg
          - heatingOil
          - dieselHvo
          - dieselBMix
          - dieselRed
    Transactions:
      type: array
      items:
        "$ref": "#/components/schemas/Transaction"
    TransactionsShort:
      type: array
      items:
        "$ref": "#/components/schemas/TransactionShort"
    PagingMeta:
      type: object
      properties:
        count:
          type: number
          example: 128
          description: the amount of available transactions.
    TransactionLinks:
      type: object
      properties:
        receipt:
          type: object
          properties:
            href:
              type: string
              example: https://api.pace.cloud/pay/receipts/b58b6898-ca63-4417-b671-abe86fb853f0.png
            meta:
              type: object
              properties:
                mimeType:
                  type: string
                  enum:
                  - image/png
        receiptPDF:
          type: object
          properties:
            href:
              type: string
              example: https://api.pace.cloud/pay/receipts/b58b6898-ca63-4417-b671-abe86fb853f0.pdf
            meta:
              type: object
              properties:
                mimeType:
                  type: string
                  enum:
                  - application/pdf
    Discounts:
      type: array
      items:
        "$ref": "#/components/schemas/Discount"
    DiscountRelationship:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                - discount
              id:
                type: string
                format: uuid
                description: Discount Token ID
                example: c3f037ea-492e-4033-9b4b-4efc7beca16c
    Discount:
      type: object
      properties:
        type:
          type: string
          enum:
          - discount
        id:
          type: string
          format: uuid
          description: Discount Token ID
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        attributes:
          type: object
          properties:
            title:
              type: string
              description: Line item
              example: Giropay promotion campaign
            amount:
              type: number
              format: decimal
              description: Amount in the currency of the pumps ready to pay amount
              example: 1.5
            provider:
              type: string
              description: Technical reference to the provider/campaign
              example: prn:discount:providers:giropay:campaigns:2021-8-cent
    Transaction:
      type: object
      properties:
        type:
          type: string
          enum:
          - transaction
        id:
          type: string
          format: uuid
          description: ID of the new transaction.
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        links:
          "$ref": "#/components/schemas/TransactionLinks"
        attributes:
          type: object
          properties:
            createdAtLocaltime:
              type: string
              description: 'Initial creation date of the transaction (local-time of
                the gas station/point of interest) (https://tools.ietf.org/html/rfc3339#section-5.6).

                '
              example: '2017-07-21T17:32:28Z'
            createdAt:
              type: string
              format: date-time
              description: 'Initial creation date of the transaction (https://tools.ietf.org/html/rfc3339#section-5.6).

                '
              example: '2017-07-21T17:32:28Z'
            updatedAt:
              type: string
              format: date-time
              description: 'Date of the last update (https://tools.ietf.org/html/rfc3339#section-5.6).

                '
              example: '2017-07-21T19:32:28Z'
            paymentMethodKind:
              type: string
              description: Payment Method Kind as name.
              example: paydirekt
              readOnly: true
            paymentMethodId:
              type: string
              format: uuid
              description: ID of the paymentMethod
              example: d7101f72-a672-453c-9d36-d5809ef0ded6
              readOnly: true
            paymentToken:
              type: string
              description: Payment token value
              example: 12c52345c1x34
            purposePRN:
              type: string
              description: PACE resource name
              example: prn:poi:gas-stations:124e522d-65ef-4386-b7e0-00d2eceeadc6:pumps:f86c1f11-687e-4a85-b16f-3f82a16f3243
            providerPRN:
              type: string
              description: PACE resource name - referring to the transaction purpose
                with provider details.
              example: prn:provider-name:sites:7652346752:pumps:6
              readOnly: true
            issuerPRN:
              type: string
              description: PACE resource name
              example: prn:poi:apps:c30bce97-b732-4390-af38-1ac6b017aa4c
            vin:
              type: string
              description: Vehicle identification number
              example: 1B3EL46R36N102271
            mileage:
              type: integer
              description: Current mileage in meters
              example: 66435000
            numberPlate:
              type: string
              description: Number plate of the car
              example: KA AM1234
            productFlow:
              type: string
              description: The given productFlow (e.g. preAuth, postPay)
              example: preAuth
            priceIncludingVATBeforeDiscount:
              type: number
              format: decimal
              example: 69.34
              description: If a discount was applied, this the transaction sum, before
                applying the discound
            priceIncludingVAT:
              type: number
              format: decimal
              example: 68.17
              description: If a discount was applied, this is the already fully discounted
                transaction sum
            priceWithoutVAT:
              type: number
              format: decimal
              example: 58.27
            discountAmount:
              description: Amount that was discounted. Only if any discounts were
                applied earlier.
              type: number
              format: decimal
              example: 1.27
            fuel:
              "$ref": "#/components/schemas/Fuel"
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 11.07
                rate:
                  type: number
                  format: decimal
                  example: 0.19
            references:
              type: array
              example:
              - prn:acquirer:transactions:jgrwsntrjt:types:settlement
              - prn:acquirer:methods:creditcard
              items:
                type: string
            location:
              "$ref": "#/components/schemas/ReadOnlyLocation"
        relationships:
          readOnly: true
          type: object
          properties:
            discountTokens:
              "$ref": "#/components/schemas/DiscountRelationship"
    TransactionShort:
      type: object
      properties:
        type:
          type: string
          enum:
          - transaction
        id:
          type: string
          format: uuid
          description: ID of the new transaction.
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        attributes:
          type: object
          properties:
            createdAtLocaltime:
              type: string
              description: 'Initial creation date of the transaction (local-time of
                the gas station/point of interest) (https://tools.ietf.org/html/rfc3339#section-5.6).

                '
              example: '2017-07-21T18:32:28'
            createdAt:
              type: string
              format: date-time
              description: 'Initial creation date of the transaction (https://tools.ietf.org/html/rfc3339#section-5.6).

                '
              example: '2017-07-21T17:32:28Z'
            priceIncludingVAT:
              type: number
              format: decimal
              example: 68.17
              description: Total price at pump including VAT
            priceWithoutVAT:
              type: number
              format: decimal
              example: 58.27
              description: Total price at pump excluding VAT
            fuel:
              "$ref": "#/components/schemas/Fuel"
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 10.88
                rate:
                  type: number
                  format: decimal
                  example: 0.19
              items:
                type: string
            location:
              "$ref": "#/components/schemas/ReadOnlyLocation"
    ReadOnlyLocation:
      type: object
      properties:
        latitude:
          type: number
          format: float
          example: 49.013
          readOnly: true
        longitude:
          type: number
          format: float
          example: 8.425
          readOnly: true
        brand:
          type: string
          example: JET
          readOnly: true
        address:
          type: object
          properties:
            street:
              type: string
              example: Haid-und-Neu-Str.
              readOnly: true
            houseNo:
              type: string
              example: '18'
              readOnly: true
            postalCode:
              type: string
              example: '76131'
              readOnly: true
            city:
              type: string
              example: Karlsruhe
              readOnly: true
            countryCode:
              type: string
              example: DE
              description: Country code in as specified in ISO 3166-1.
              readOnly: true
    Errors:
      type: object
      description: |
        Error objects provide additional information about problems encountered while performing an operation.
        Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

            * `1000`:  generic error
            * `1001`:  payment processing temporarily unavailable
            * `1002`:  requested amount exceeds the authorized amount of the provided token
            * `1003`:  implicit payment methods cannot be modified
            * `1004`:  payment method rejected by provider
            * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
            * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: A unique identifier for this particular occurrence of
                  the problem.
              links:
                type: object
                properties:
                  about:
                    type: string
                    description: 'A link that leads to further details about this
                      particular occurrence of the problem.

                      '
              status:
                type: string
                description: 'the HTTP status code applicable to this problem, expressed
                  as a string value.

                  '
              code:
                type: string
                description: 'an application-specific error code, expressed as a string
                  value.

                  '
              title:
                type: string
                description: 'A short, human-readable summary of the problem that
                  SHOULD NOT change from occurrence to occurrence of the problem,
                  except for purposes of localization.

                  '
              detail:
                type: string
                description: 'a human-readable explanation specific to this occurrence
                  of the problem. Like title, this field’s value can be localized.

                  '
              source:
                type: object
                description: 'An object containing references to the source of the
                  error.

                  '
                properties:
                  pointer:
                    type: string
                    description: 'A JSON Pointer [RFC6901] to the associated entity
                      in the request document [e.g. "/data" for a primary data object,
                      or "/data/attributes/title" for a specific attribute].

                      '
                  parameter:
                    type: string
                    description: 'A string indicating which URI query parameter caused
                      the error.

                      '
              meta:
                type: object
                description: 'a meta object containing non-standard meta-information
                  about the error.

                  '
                properties: {}
                additionalProperties: true
  responses:
    AuthorizeMethodNotAllowed:
      description: |
        Cannot authorize with this method. This usually means that you are trying to use an implicit method for authorization.
        Implicit payment methods do not use the regular authorization endpoint, e.g., Apple Pay.

        If this is the case the returned error code (in the response body) is: `method:implicit-method-not-supported`
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    BadGateway:
      description: Error occurred while communicating with upstream services
      content:
        application/vnd.api+json:
          schema:
            "$ref": "#/components/schemas/Errors"
    Unauthorized:
      description: |
        OAuth token missing or invalid or a linked identity is missing.

        Linked identity missing is a special case where you need to make sure that
        the user has additionally logged in / authorized with a third-party.

        This is not relevant for most use-cases.

        The specific error code that identifies a missing linked identity is `missing-linked-identity`

        Example:

        ```
          {
              "errors": [
                  {
                      "id": "cbgmhslmp1o9or9kh1p0",
                      "title": "Missing linked identity for authorized access",
                      "detail": "Linked identity is needed to access this resource, please check why the user does not have a linked identity",
                      "status": "401",
                      "code": "missing-linked-identity"
                  }
              ]
          }
        ```
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    Forbidden:
      description: Forbidden
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    RequestTimeout:
      description: Your request timed out
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    BadRequest:
      description: Bad request
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    MethodNotAllowed:
      description: Method not allowed
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    UnprocessableEntity:
      description: The request was well-formed but was unable to be followed due to
        semantic errors.
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    NotAcceptable:
      description: The specified accept header is invalid
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    InternalServerError:
      description: Internal server error
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    NotFound:
      description: Resource not found
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    Conflict:
      description: Resource conflicts
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    Gone:
      description: Resource is gone
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    UnsupportedMediaType:
      description: The specified content type header is invalid
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    AmountCannotBeAuthorized:
      description: |
        Amount cannot be authorized. The following codes may be seen:
        * `provider:payment-method-rejected`: The method was rejected by the payment provider
        * `provider:authorization-denied`: The authorization was rejected by the payment provider
        * `fuelcard:ondemand:activation-required`: On-Demand fuelcards require activation before usage. This error is returned if an attempt is being made without prior activation of the fuelcard.
        * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
        * `otp:invalid`: The provided two factor token is missing or has been rejected.
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
    ProcessPaymentForbidden:
      description: |
        The request was well-formed but was unable to be followed due to semantic errors. The following codes may be seen:
        * `provider:payment-method-rejected`: The method was rejected by the payment provider
        * `provider:authorization-denied`: The transaction was rejected by the payment provider
        * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

                  * `1000`:  generic error
                  * `1001`:  payment processing temporarily unavailable
                  * `1002`:  requested amount exceeds the authorized amount of the provided token
                  * `1003`:  implicit payment methods cannot be modified
                  * `1004`:  payment method rejected by provider
                  * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)
                  * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: A unique identifier for this particular occurrence
                        of the problem.
                    links:
                      type: object
                      properties:
                        about:
                          type: string
                          description: 'A link that leads to further details about
                            this particular occurrence of the problem.

                            '
                    status:
                      type: string
                      description: 'the HTTP status code applicable to this problem,
                        expressed as a string value.

                        '
                    code:
                      type: string
                      description: 'an application-specific error code, expressed
                        as a string value.

                        '
                    title:
                      type: string
                      description: 'A short, human-readable summary of the problem
                        that SHOULD NOT change from occurrence to occurrence of the
                        problem, except for purposes of localization.

                        '
                    detail:
                      type: string
                      description: 'a human-readable explanation specific to this
                        occurrence of the problem. Like title, this field’s value
                        can be localized.

                        '
                    source:
                      type: object
                      description: 'An object containing references to the source
                        of the error.

                        '
                      properties:
                        pointer:
                          type: string
                          description: 'A JSON Pointer [RFC6901] to the associated
                            entity in the request document [e.g. "/data" for a primary
                            data object, or "/data/attributes/title" for a specific
                            attribute].

                            '
                        parameter:
                          type: string
                          description: 'A string indicating which URI query parameter
                            caused the error.

                            '
                    meta:
                      type: object
                      description: 'a meta object containing non-standard meta-information
                        about the error.

                        '
                      properties: {}
                      additionalProperties: true
  securitySchemes:
    OIDC:
      type: openIdConnect
      openIdConnectUrl: https://id.pace.cloud/auth/realms/pace/.well-known/openid-configuration
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/auth
          tokenUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
          refreshUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
          scopes:
            pay:payment-methods:create: Create a payment method
            pay:payment-methods:delete: Delete a payment method
            pay:payment-methods:read: Get/search for payment methods
            pay:payment-methods:patch: Change customer fields on the payment method
            pay:payment-tokens:create: Create a payment token
            pay:payment-tokens:delete: Delete a payment token
            pay:payment-tokens:read: Get a payment token
            pay:transactions:create: Create a transaction
            pay:transactions:read: |
              Get a transaction

              If the client has the scope `pay:payment-transactions:global-list` and the user the realm role `finance_operator` access to all transactions is permitted (administrative access).
            pay:transactions:cancel: Cancel a transaction
