{
  "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.\n",
    "termsOfService": "https://legal.pace.cloud/",
    "contact": {
      "name": "PACE Developer Support",
      "url": "https://developer.pace.cloud",
      "email": "api-access@pace.car"
    },
    "version": "2024-1"
  },
  "servers": [
    {
      "url": "https://api.pace.cloud/pay/2024-1",
      "description": "Production server (stable release 2024-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.\nThe client needs to acquire the validation url beforehand.\n\nThis endpoint is pre-requisite for calling `/payment-method-kinds/applepay/authorize`.\n",
        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "properties": {},
                            "additionalProperties": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Payment information cannot be resolved with Apple Pay.\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "type": "object",
                  "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "properties": {},
                            "additionalProperties": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "406": {
            "$ref": "#/components/responses/NotAcceptable"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          }
        }
      }
    },
    "/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\nto create the `applePay` section.\n\nClients need to call `/payment-method-kinds/applepay/session` beforehand to obtain a Apple Pay\nPaymentSession that can be used to obtain the applePay payload.\n",
        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "properties": {},
                            "additionalProperties": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Payment information cannot be resolved with Apple Pay.\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "type": "object",
                  "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "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"
          }
        }
      }
    },
    "/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\nto create the `googlePay` specific authorization data.\n",
        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "properties": {},
                            "additionalProperties": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Payment information cannot be resolved with Google Pay.\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "type": "object",
                  "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "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"
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., credit card expired\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider, e.g., wrong checksum (CVC)\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n* `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004` below)\n",
            "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"
          }
        }
      }
    },
    "/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.\nThis payment method only works on *test environments* and is *reserved for testing purposes*.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., credit card expired\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider, e.g., wrong checksum (CVC)\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n* `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004` below)\n",
            "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"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\nIf 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.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\nRegistering 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.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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.\nThe payment method ID is optional when posting data.\nRegistering 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.\n",
        "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:\n* `provider:card-not-usable`: The card is rejected by the payment provider\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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:\n* `provider:card-not-usable`: The card is rejected by the payment provider, e.g., fuelcard deactivated\n* `provider:invalid-content`: One or more fields of the payment method is not accepted by the payment provider.\n* `invalid-charset`: The fields charset is not latin\n* `too-long`: The fields content is too long\n",
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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"
          }
        }
      },
      "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.\n",
        "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"
          }
        }
      },
      "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"
          },
          "403": {
            "description": "Not allowed to delete payment method, either it's set as the implicit method, either it's used in ongoing transactions."
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "406": {
            "$ref": "#/components/responses/NotAcceptable"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/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",
              "format": "uuid"
            },
            "required": true,
            "description": "ID of the paymentMethod",
            "example": "93db55b6-a9ab-4597-a253-49a1718cea0a"
          }
        ],
        "responses": {
          "200": {
            "description": "Notification received"
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/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>\nThis is as opposed to the regular `/payment-methods`, which does not categorize payment methods as valid for use.</br></br>\nYou 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>\nIf 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"
          }
        }
      }
    },
    "/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>\nThis is as opposed to the regular `/payment-methods`, which does not categorize payment methods as valid for use.</br></br>\nYou 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>\nIf 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"
          }
        }
      }
    },
    "/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>\nThe 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"
          }
        }
      }
    },
    "/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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
                  "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.\n"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                          },
                          "code": {
                            "type": "string",
                            "description": "an application-specific error code, expressed as a string value.\n"
                          },
                          "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.\n"
                          },
                          "detail": {
                            "type": "string",
                            "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                          },
                          "source": {
                            "type": "object",
                            "description": "An object containing references to the source of the error.\n",
                            "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].\n"
                              },
                              "parameter": {
                                "type": "string",
                                "description": "A string indicating which URI query parameter caused the error.\n"
                              }
                            }
                          },
                          "meta": {
                            "type": "object",
                            "description": "a meta object containing non-standard meta-information about the error.\n",
                            "properties": {},
                            "additionalProperties": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          }
        }
      }
    },
    "/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"
          }
        }
      },
      "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.\n",
        "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"
          }
        }
      }
    },
    "/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"
          }
        }
      },
      "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"
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/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.\n",
        "parameters": [
          {
            "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.\nReturns the receipt in the default language that is available if the specified language is not available.\n\nLanguage does not have to be valid language. For example, `language=local` means that the receipt should be displayed\nin the language that is determined to be spoken in the area that the point of intereset at which the receipt has been generated at.\n\n*Prefer using the `Accept-Language` header if you use this endpoint on an end-user device.*\n"
          }
        ],
        "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"
          }
        }
      }
    },
    "/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.\n",
        "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.\nReturns the receipt in the default language that is available if the specified language is not available.\n\nLanguage does not have to be valid language. For example, `language=local` means that the receipt should be displayed\nin the language that is determined to be spoken in the area that the point of intereset at which the receipt has been generated at.\n\n*Prefer using the `Accept-Language` header if you use this endpoint on an end-user device.*\n"
          }
        ],
        "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"
          }
        }
      }
    },
    "/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.\n",
        "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.\nReturns the receipt in the default language that is available if the specified language is not available.\n\nLanguage does not have to be valid language. For example, `language=local` means that the receipt should be displayed\nin the language that is determined to be spoken in the area that the point of intereset at which the receipt has been generated at.\n\n*Prefer using the `Accept-Language` header if you use this endpoint on an end-user device.*\n"
          }
        ],
        "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"
          }
        }
      }
    },
    "/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.\n",
        "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"
          }
        }
      },
      "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.\nThe `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.\n<br><br>\nOnly use after approaching (fueling api), otherwise returns `403 Forbidden`.\n",
        "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"
          }
        }
      }
    },
    "/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.\n",
        "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"
          }
        }
      }
    },
    "/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.\n",
        "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\nreseller;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\n"
              }
            }
          },
          "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"
          }
        }
      }
    },
    "/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.\nIf `update=longPolling` is set, the following applies:\nIn 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.\n",
        "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)\nbefore returning the result.\n",
            "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"
          }
        }
      }
    },
    "/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.\n<br><br>\n* Canceling the transaction and or the token is only permitted if the transaction is still open, otherwise a `403 Forbidden` will be returned.\n* In case the transaction and token are already canceled and the request is repeated, the result will still be `204 No Content`.\n",
        "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"
          }
        }
      }
    }
  },
  "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.\nMost payment method kinds are no implicit, i.e., `implicit=false`.\nThis field is optional and if not present should be assumed to indicate `implicit=false`.\n",
                "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": {
                  "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\n\nLorem ipsum ...\n"
                      },
                      "html": {
                        "type": "string",
                        "description": "Terms formatted as markdown. Does not contain external resources like images.",
                        "example": "<h1>Terms & Conditions</h1>\n\n<p>Lorem ipsum ...</p>\n"
                      }
                    }
                  }
                }
              },
              "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.\nA payment method that has the status `created` has yet to be verified. This is the case for payment methods,\nwhich have an asynchronous verification process, e.g., paydirekt (waiting for an email).\n",
                "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",
                        "additionalData"
                      ]
                    },
                    "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]+"
                    },
                    {
                      "name": "additionalData",
                      "maxLength": 12,
                      "regex": "[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.\nMost payment method kinds are no implicit, i.e., `implicit=false`.\nThis field is optional and if not present should be assumed to indicate `implicit=false`.\n",
                "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\nprocessing the payment.\n",
                "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.\n"
              },
              "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.\n"
              },
              "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.\n"
              },
              "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.\n"
              },
              "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.\n"
              },
              "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.\n"
              },
              "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.\n"
              },
              "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.\n"
              },
              "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)."
              },
              "dualcard": {
                "type": "boolean",
                "example": false,
                "description": "Indicates whether the card should be onboarded as a dual card."
              }
            }
          }
        }
      },
      "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.\n"
              },
              "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.\nExample: In-Browser, the Payment Provider Credit Card Widget will return a token after adding a credit card. This token should be\nused here.\n\nThe expected token format if used with concardis as JS SDK provider is the following:\n`prn:concardis:instruments:$paymentInstrumentID$:threeds:$threeDSAuthenticationID$`\nParts enclosed with `$` are place-holders, please fill in the values you receive from the SDK.\nA 3DS authentication id is mandatory.\n"
              }
            }
          }
        }
      },
      "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"
                  }
                }
              }
            }
          }
        }
      },
      "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."
              }
            }
          }
        }
      },
      "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"
                }
              },
              "additionalData": {
                "type": "string",
                "description": "additional data for omv",
                "example": "987654321098"
              }
            }
          }
        }
      },
      "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"
        }
      },
      "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).\n",
                "example": "2017-07-21T17:32:28Z"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "description": "Initial creation date of the transaction (UTC) (https://tools.ietf.org/html/rfc3339#section-5.6).\n",
                "example": "2017-07-21T17:32:28Z"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time",
                "description": "Date of the last update (UTC) (https://tools.ietf.org/html/rfc3339#section-5.6).\n",
                "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
              },
              "authorizePaymentTokenId": {
                "type": "string",
                "format": "uuid",
                "description": "ID of the authorization payment token",
                "readOnly": true
              },
              "paymentToken": {
                "type": "string",
                "description": "Payment token value",
                "example": "12c52345c1x34"
              },
              "paymentTokenRequestID": {
                "type": "string",
                "description": "Request ID of the payment token"
              },
              "paymentTransactionRequestID": {
                "type": "string",
                "description": "Request ID of the payment transaction"
              },
              "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"
              },
              "additionalData": {
                "type": "string",
                "description": "additional data for omv",
                "example": "987654321098"
              },
              "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"
              },
              "error": {
                "type": "string",
                "description": "Description of the error that occured"
              }
            }
          },
          "relationships": {
            "readOnly": true,
            "type": "object",
            "properties": {
              "discountTokens": {
                "$ref": "#/components/schemas/DiscountRelationship"
              }
            }
          }
        }
      },
      "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": "Total",
            "readOnly": true
          },
          "stationName": {
            "type": "string",
            "example": "German Petrol",
            "readOnly": true
          },
          "brandId": {
            "type": "string",
            "example": "hoyer",
            "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
        "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.\n"
                    }
                  }
                },
                "status": {
                  "type": "string",
                  "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                },
                "code": {
                  "type": "string",
                  "description": "an application-specific error code, expressed as a string value.\n"
                },
                "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.\n"
                },
                "detail": {
                  "type": "string",
                  "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                },
                "source": {
                  "type": "object",
                  "description": "An object containing references to the source of the error.\n",
                  "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].\n"
                    },
                    "parameter": {
                      "type": "string",
                      "description": "A string indicating which URI query parameter caused the error.\n"
                    }
                  }
                },
                "meta": {
                  "type": "object",
                  "description": "a meta object containing non-standard meta-information about the error.\n",
                  "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.\nImplicit payment methods do not use the regular authorization endpoint, e.g., Apple Pay.\n\nIf this is the case the returned error code (in the response body) is: `method:implicit-method-not-supported`\n",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\n\nLinked identity missing is a special case where you need to make sure that\nthe user has additionally logged in / authorized with a third-party.\n\nThis is not relevant for most use-cases.\n\nThe specific error code that identifies a missing linked identity is `missing-linked-identity`\n\nExample:\n\n```\n  {\n      \"errors\": [\n          {\n              \"id\": \"cbgmhslmp1o9or9kh1p0\",\n              \"title\": \"Missing linked identity for authorized access\",\n              \"detail\": \"Linked identity is needed to access this resource, please check why the user does not have a linked identity\",\n              \"status\": \"401\",\n              \"code\": \"missing-linked-identity\"\n          }\n      ]\n  }\n```\n",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "AmountCannotBeAuthorized": {
        "description": "Amount cannot be authorized. The following codes may be seen:\n* `provider:payment-method-rejected`: The method was rejected by the payment provider\n* `provider:authorization-denied`: The authorization was rejected by the payment provider\n* `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.\n* `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n* `otp:invalid`: The provided two factor token is missing or has been rejected.\n",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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:\n* `provider:payment-method-rejected`: The method was rejected by the payment provider\n* `provider:authorization-denied`: The transaction was rejected by the payment provider\n* `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "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.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "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.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "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].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "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\n\nIf 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).\n",
              "pay:transactions:cancel": "Cancel a transaction"
            }
          }
        }
      }
    }
  }
}