---
openapi: 3.0.3
info:
  title: PACE Fueling API
  description: The PACE Fueling API is responsible for managing fueling related actions.
  termsOfService: https://legal.pace.cloud/
  contact:
    name: PACE Developer Support
    url: https://developer.pace.cloud
    email: api-access@pace.car
  version: 2020-4
servers:
- url: https://api.pace.cloud/fueling/2020-4
  description: Production server (stable release 2020-4)
x-anchors:
  fuel:
    type: string
    description: Fuel type for cars, based on the EU fuel marking
    enum:
    - ron98
    - ron98e5
    - ron95e10
    - diesel
    - e85
    - ron91
    - ron95e5
    - ron100
    - dieselGtl
    - dieselB7
    - dieselB15
    - dieselPremium
    - lpg
    - cng
    - lng
    - h2
    - truckDiesel
    - adBlue
    - truckAdBlue
    - truckDieselPremium
    - truckLpg
    - heatingOil
    example: ron95e10
  fuelPrice:
    type: object
    properties:
      type:
        type: string
        description: Fuel price
        enum:
        - fuelPrice
      id:
        type: string
        description: Fuel Price ID
        example: 2a1319c3-c136-495d-b59a-47b3246d08af
      attributes:
        type: object
        properties:
          fuelType:
            type: string
            description: Fuel type for cars, based on the EU fuel marking
            enum:
            - ron98
            - ron98e5
            - ron95e10
            - diesel
            - e85
            - ron91
            - ron95e5
            - ron100
            - dieselGtl
            - dieselB7
            - dieselB15
            - dieselPremium
            - lpg
            - cng
            - lng
            - h2
            - truckDiesel
            - adBlue
            - truckAdBlue
            - truckDieselPremium
            - truckLpg
            - heatingOil
            example: ron95e10
          price:
            type: number
            format: decimal
            description: Price in liters
            example: 1.379
          currency:
            type: string
            example: EUR
            description: Currency as specified in ISO-4217.
            pattern: "^[A-Z]{3}$"
          productName:
            type: string
            example: Super E10
  pumpStatus:
    type: string
    description: |
      Current pump status.
      * `free` the pump is free, fueling possible (nozzle not lifted), possible transitions *inUse*, *locked*, *outOfOrder*. Note: A transition from *free* to *locked* may implies the pump was pre-authorization was canceled.
      * `inUse` the pump is fueling, possible transitions *readyToPay*, *locked*, *outOfOrder*
      * `readyToPay` the pump can be payed using the post pay process, possible transitions *free*, *locked*, *outOfOrder*. Note: A transition from *readyToPay* to *free* implies the pump was paid.
      * `locked` the pump required a pre-authorization, possible transitions *free*, *inTransaction*, *outOfOrder*. Note: A transition from *locked* to *free* implies the pre-authorization was successful.
      * `inTransaction` the pump is in use by another user using the pre-authorization process, possible transitions *locked*, *outOfOrder*
      * `outOfOrder` the pump has a technical problem, this can only be resolved by the gas station staff on site, possible transitions *free*, *locked*. Note: The customer has to pay in the shop
    enum:
    - free
    - inUse
    - readyToPay
    - locked
    - inTransaction
    - outOfOrder
  pump:
    type: object
    properties:
      type:
        type: string
        description: Type
        enum:
        - pump
      id:
        type: string
        format: uuid
        description: Pump ID
        example: a166d498-a8d6-49f0-83ef-50a42dcf7748
      attributes:
        type: object
        properties:
          identifier:
            type: string
            description: Pump identifier
            example: '2'
          fuelingProcess:
            type: string
            enum:
            - postPay
            - preAuth
            - preAuthWithFuelType
            description: |
              The fueling process that has to be followed
              * `postPay` the pump is *free* and needs to be [paid](#operation/ProcessPayment) after fueling
              * `preAuth` the pump is *locked* and has to be [unlocked](#operation/ProcessPayment)
              * `preAuthWithFuelType` the pump is *locked* and has to be [unlocked](#operation/ProcessPayment), the `carFuelType` is required
            example: postPay
          status:
            type: string
            description: |
              Current pump status.
              * `free` the pump is free, fueling possible (nozzle not lifted), possible transitions *inUse*, *locked*, *outOfOrder*. Note: A transition from *free* to *locked* may implies the pump was pre-authorization was canceled.
              * `inUse` the pump is fueling, possible transitions *readyToPay*, *locked*, *outOfOrder*
              * `readyToPay` the pump can be payed using the post pay process, possible transitions *free*, *locked*, *outOfOrder*. Note: A transition from *readyToPay* to *free* implies the pump was paid.
              * `locked` the pump required a pre-authorization, possible transitions *free*, *inTransaction*, *outOfOrder*. Note: A transition from *locked* to *free* implies the pre-authorization was successful.
              * `inTransaction` the pump is in use by another user using the pre-authorization process, possible transitions *locked*, *outOfOrder*
              * `outOfOrder` the pump has a technical problem, this can only be resolved by the gas station staff on site, possible transitions *free*, *locked*. Note: The customer has to pay in the shop
            enum:
            - free
            - inUse
            - readyToPay
            - locked
            - inTransaction
            - outOfOrder
          fuelType:
            type: string
            example: ron95e10
          productName:
            type: string
            example: Super E10
          fuelAmount:
            type: number
            format: decimal
            description: Fuel amount in liters
            example: 44.3
          pricePerUnit:
            type: number
            format: decimal
            description: Fuel price in CUR/liter
            example: 1.359
          VAT:
            type: object
            properties:
              amount:
                type: number
                format: decimal
                example: 9.72
              rate:
                type: number
                format: decimal
                example: 0.19
          priceWithoutVAT:
            type: number
            format: decimal
            example: 51.37
          priceIncludingVAT:
            type: number
            format: decimal
            example: 61.09
          currency:
            type: string
            example: EUR
            description: Currency as specified in ISO-4217.
            pattern: "^[A-Z]{3}$"
          transactionId:
            type: string
            format: uuid
            example: e809fcfc-5fdd-4fba-9d3c-2b56c22d643c
            description: Provided if the user pre-authorized the pump
paths:
  "/gas-stations/{gasStationId}/approaching":
    post:
      tags:
      - Fueling
      operationId: ApproachingAtTheForecourt
      security:
      - OAuth2:
        - fueling:gas-stations:approaching
      - OIDC:
        - fueling:gas-stations:approaching
      summary: 'Gather information when approaching at the forecourt

        '
      description: |
        This request will:
        * Return a list of paymentMethods of the user which can be used at the
          gas station.

        * Return up-to-date price information (price structure) at the gas
          station.

        * Return a list of pumps available at the gas station together with the
          current status (free, inUse, readyToPay, outOfOrder). No pumps might
          be returned if the list of payment methods is empty.

        * Create payment tokens for the paymentMethods of the user that are also
          supported at the gas station and pre-authorize the calculated maximum
          amount of money (background task).

        The approaching is a necessary first api call for connected fueling. Without a valid approaching the [get pump](#operation/GetPump) and [wait for status change](#operation/WaitOnPumpStatusChange) calls may be answered with a `403 Forbidden` status code. An approaching is valid for one fueling only and can't be reused. If a long (not further disclosed time) has passed, the approaching is also invalidated. So if the client is receiving a `403 Forbidden` on the above mentioned calls, a new approaching has to be issued, this can be done transparent to the user.
      parameters:
      - in: path
        name: gasStationId
        schema:
          type: string
          format: uuid
        required: true
        description: Gas station ID
        example: 93db55b6-a9ab-4597-a253-49a1718cea0a
      - in: query
        name: compile[openingHours]
        schema:
          type: boolean
          enum:
          - true
          - false
        example: true
        description: Reduces the opening hours rules. After compilation, only rules
          with the action open will remain in the response.
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/ApproachingResponse"
                  included:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/components/schemas/GasStation"
                      - "$ref": "#/components/schemas/FuelPrice"
                      - "$ref": "#/components/schemas/Pump"
                      - "$ref": "#/components/schemas/PaymentMethod"
                      - "$ref": "#/components/schemas/PaymentMethodKind"
              example:
                data:
                  type: approaching
                  id: c3f037ea-492e-4033-9b4b-4efc7beca16c
                  relationships:
                    gasStation:
                      data:
                        type: gasStation
                        id: 93db55b6-a9ab-4597-a253-49a1718cea0a
                    paymentMethods:
                      data:
                      - type: paymentMethod
                        id: 6e30ccd1-0f76-4208-bd3d-a804f810cba8
                    unsupportedPaymentMethods:
                      data:
                      - type: paymentMethod
                        id: 38ce6b10-c515-4316-9c40-64e1382b07b3
                    supportedPaymentMethodKinds:
                      data:
                      - type: paymentMethodKind
                        id: sepa
                included:
                - type: gasStation
                  id: 93db55b6-a9ab-4597-a253-49a1718cea0a
                  attributes:
                    latitude: 49.013
                    longitude: 8.425
                    stationName: PACE Station
                    address:
                      street: Haid-und-Neu-Str.
                      houseNo: '18'
                      postalCode: '76131'
                      city: Karlsruhe
                      countryCode: DE
                    openingHours:
                      timezone: "+01:00"
                      rules:
                      - days:
                        - monday
                        - tuesday
                        - wednesday
                        - thursday
                        - friday
                        timespans:
                        - from: '06:00'
                          to: '23:00'
                      - days:
                        - saturday
                        timespans:
                        - from: '07:00'
                          to: '23:00'
                      - days:
                        - sunday
                        timespans:
                        - from: '07:00'
                          to: '22:00'
                    amenities:
                    - restaurant
                    - wifi
                    - toilets
                    paymentMethods:
                    - sepa
                  relationships:
                    fuelPrices:
                      data:
                      - type: fuelPrice
                        id: 6b5bff6f-74e1-40a1-9da0-72305292d939
                      - type: fuelPrice
                        id: f563e0ee-ba9a-4869-8fe7-42639fcf375d
                      - type: fuelPrice
                        id: cb1afd35-f531-4606-abc8-e1cfbc1f96f5
                    pumps:
                      data:
                      - type: pump
                        id: cc6eb485-3f23-48bb-aa79-f995ba35b824
                      - type: pump
                        id: 689631b2-cd75-4f01-a36e-72f77cd4f007
                - type: fuelPrice
                  id: 6b5bff6f-74e1-40a1-9da0-72305292d939
                  attributes:
                    fuelType: ron95e5
                    price: 1.399
                    currency: EUR
                    productName: Super E5
                - type: fuelPrice
                  id: f563e0ee-ba9a-4869-8fe7-42639fcf375d
                  attributes:
                    fuelType: ron95e10
                    price: 1.379
                    currency: EUR
                    productName: Super E10
                - type: fuelPrice
                  id: cb1afd35-f531-4606-abc8-e1cfbc1f96f5
                  attributes:
                    fuelType: diesel
                    price: 1.239
                    currency: EUR
                    productName: Diesel
                - type: pump
                  id: cc6eb485-3f23-48bb-aa79-f995ba35b824
                  attributes:
                    status: free
                    identifier: '1'
                - type: pump
                  id: 689631b2-cd75-4f01-a36e-72f77cd4f007
                  attributes:
                    status: inUse
                    identifier: '2'
                - type: paymentMethod
                  id: 6e30ccd1-0f76-4208-bd3d-a804f810cba8
                  attributes:
                    kind: sepa
                    identificationString: DEUTSCHEBANK XX 3000
                    vendorPRN: prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
                    twoFactor: true
                  meta:
                    merchantName: PACE
                - type: paymentMethod
                  id: 38ce6b10-c515-4316-9c40-64e1382b07b3
                  attributes:
                    kind: sepa
                    identificationString: ING-DiBa XX 1337
                - type: paymentMethodKind
                  id: sepa
                  attributes: {}
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
        '503':
          "$ref": "#/components/responses/OfflineGasStation"
      deprecated: true
  "/gas-stations/{gasStationId}/pumps":
    get:
      tags:
      - Fueling
      operationId: GetPumps
      security:
      - OAuth2:
        - fueling:pumps:read
      - OIDC:
        - fueling:pumps:read
      summary: Return pump information on all pumps of the gas station
      description: |
        Returns the current pump status (free, inUse, readyToPay, outOfOrder, locked) and identifier. If the status is readyToPay, the result also contains fuelType, productName, fuelAmount, VAT (amount & rate), priceWithoutVAT, priceIncludingVAT, currency.
        <br><br>
        Only use after approaching, otherwise returns `403 Forbidden`.
      parameters:
      - in: path
        name: gasStationId
        schema:
          type: string
          format: uuid
        required: true
        description: Gas station ID
        example: 583ad807-6a08-4d5a-b3f6-8861b0e355df
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/GetPumpsResponse"
                  included:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/components/schemas/Pump"
        '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"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/gas-stations/{gasStationId}/pumps/{pumpId}":
    get:
      tags:
      - Fueling
      operationId: GetPump
      security:
      - OAuth2:
        - fueling:pumps:read
      - OIDC:
        - fueling:pumps:read
      summary: Return current pump information
      description: |
        Returns the current pump status (free, inUse, readyToPay, outOfOrder) and identifier. If the status is readyToPay, the result also contains fuelType, productName, fuelAmount, VAT (amount & rate), priceWithoutVAT, priceIncludingVAT, currency.
        <br><br>
        Only use after approaching, otherwise returns `403 Forbidden`.
      parameters:
      - in: path
        name: gasStationId
        schema:
          type: string
          format: uuid
        required: true
        description: Gas station ID
        example: 583ad807-6a08-4d5a-b3f6-8861b0e355df
      - in: path
        name: pumpId
        schema:
          type: string
          format: uuid
        required: true
        description: Pump ID
        example: a4373543-4083-4f0c-a4a9-4bc458b598fd
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PumpResponse"
              example:
                data:
                  type: pump
                  id: baca9c76-82bf-44e7-b8b0-8af44fa4998b
                  attributes:
                    identifier: '3'
                    fuelingProcess: preAuth
                    status: readyToPay
                    fuelType: ron95e10
                    productName: Super E10
                    fuelAmount: 44.3
                    pricePerUnit: 1.379
                    VAT:
                      amount: 9.72
                      rate: 0.19
                    priceWithoutVAT: 51.37
                    priceIncludingVAT: 61.09
                    currency: EUR
                    transactionId: 93947b05-8486-44d0-822b-c02e1a1eeed7
        '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"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/gas-stations/{gasStationId}/pumps/{pumpId}/wait-for-status-change":
    get:
      tags:
      - Fueling
      operationId: WaitOnPumpStatusChange
      security:
      - OAuth2:
        - fueling:pumps:read
      - OIDC:
        - fueling:pumps:read
      summary: Wait for a status change on a given pump
      description: |
        Uses **long polling** to wait for a status change on a given pump. Returns as soon as the status has changed or after the number of seconds provided by the optional `timeout` query parameter (default timeout is 30 seconds). In case of timeout (408 status code) you're safe to start the request again. Instantaneously returns if `lastStatus` was given and already changed between request. If successful, it returns the same structure as the normal status call
        <br><br>
        Only use after approaching, otherwise returns `403 Forbidden`.
      parameters:
      - in: path
        name: gasStationId
        schema:
          type: string
          format: uuid
        required: true
        description: Gas station ID
        example: a6ec9bd7-cf0b-416c-b24f-9ce65ab3dfe1
      - in: path
        name: pumpId
        schema:
          type: string
          format: uuid
        required: true
        description: Pump ID
        example: 4665fddc-83fe-46bd-85ae-110d71e78357
      - in: query
        name: update
        schema:
          type: string
          enum:
          - longPolling
        description: Use **long polling** for status updates
      - in: query
        name: lastStatus
        schema:
          type: string
          description: |
            Current pump status.
            * `free` the pump is free, fueling possible (nozzle not lifted), possible transitions *inUse*, *locked*, *outOfOrder*. Note: A transition from *free* to *locked* may implies the pump was pre-authorization was canceled.
            * `inUse` the pump is fueling, possible transitions *readyToPay*, *locked*, *outOfOrder*
            * `readyToPay` the pump can be payed using the post pay process, possible transitions *free*, *locked*, *outOfOrder*. Note: A transition from *readyToPay* to *free* implies the pump was paid.
            * `locked` the pump required a pre-authorization, possible transitions *free*, *inTransaction*, *outOfOrder*. Note: A transition from *locked* to *free* implies the pre-authorization was successful.
            * `inTransaction` the pump is in use by another user using the pre-authorization process, possible transitions *locked*, *outOfOrder*
            * `outOfOrder` the pump has a technical problem, this can only be resolved by the gas station staff on site, possible transitions *free*, *locked*. Note: The customer has to pay in the shop
          enum:
          - free
          - inUse
          - readyToPay
          - locked
          - inTransaction
          - outOfOrder
        required: false
        description: Pump status
        example: outOfOrder
      - in: query
        name: timeout
        schema:
          type: integer
        required: false
        description: Timeout in seconds
        example: 20
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/PumpResponse"
              example:
                data:
                  type: pump
                  id: baca9c76-82bf-44e7-b8b0-8af44fa4998b
                  attributes:
                    identifier: '3'
                    status: readyToPay
                    fuelType: ron95e10
                    productName: Super E10
                    fuelAmount: 44.3
                    VAT:
                      amount: 9.72
                      rate: 0.19
                    priceWithoutVAT: 51.37
                    priceIncludingVAT: 61.09
                    currency: EUR
        '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"
        '408':
          "$ref": "#/components/responses/RequestTimeout"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/gas-stations/{gasStationId}/transactions":
    post:
      tags:
      - Fueling
      operationId: ProcessPayment
      security:
      - OAuth2:
        - fueling:transactions:create
      - OIDC:
        - fueling:transactions:create
      summary: Pre Auth or Post Pay
      description: |
        This call supports two different flows. The *Pre Auth* flow and the *Post Pay* flow. This call will notify the user via email with a payment receipt if transaction is finished successfully. Only use after approaching, otherwise returns `403 Forbidden`.
        ### Pre Auth
        This flow is used if a pump is having the status `locked`. A `locked` pump requires a *Pre Auth* to unlock. Only after this *Pre Auth* the pump and can be used by the user
        * `carFuelType` may be passed to only unlock a certain nozzle of the pump.
          Not all pumps support this feature, and some require it. It is advised to
          always pass the desired fuel type.

        ### Post Pay
        You can optionally provide:
        * `priceIncludingVAT` and `currency` in the request body to check if the price the user has seen is still correct.
          If the values don't match, the status `409 Conflict` is returned.
        * `carFuelType` may be provided but has no effect.
      parameters:
      - in: path
        name: gasStationId
        schema:
          type: string
          format: uuid
        required: true
        description: Gas station ID
        example: a6ec9bd7-cf0b-416c-b24f-9ce65ab3dfe1
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              "$ref": "#/components/schemas/TransactionRequest"
      responses:
        '201':
          description: 'Post Pay: Payment successful'
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/ProcessPaymentResponse"
        '202':
          description: 'Pre Auth: Pump unlocked'
          headers:
            Location:
              description: Location of the future payment transaction details
              schema:
                type: string
                format: url
        '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"
        '409':
          "$ref": "#/components/responses/PriceCheckFailed"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/gas-stations/{gasStationId}/transactions/{transactionId}":
    delete:
      tags:
      - Fueling
      operationId: CancelPreAuth
      security:
      - OAuth2:
        - fueling:transactions:delete
      - OIDC:
        - fueling:transactions:delete
      summary: Cancel a Pre Auth transaction
      description: 'Cancel a Pre Auth transaction. This action is only permitted in
        case the user didn''t already start the fueling process. Returns `403 Forbidden`
        in case the fueling already started.

        '
      parameters:
      - in: path
        name: gasStationId
        schema:
          type: string
          format: uuid
        required: true
        description: Gas station ID
        example: a6ec9bd7-cf0b-416c-b24f-9ce65ab3dfe1
      - in: path
        name: transactionId
        schema:
          type: string
          format: uuid
        required: true
        description: Transaction ID (for pre auth transactions).
        example: c3f037ea-492e-4033-9b4b-4efc7beca16c
      responses:
        '204':
          description: Canceled
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/notifications":
    post:
      tags:
      - Notification
      operationId: CreateNotification
      security:
      - OAuth2:
        - fueling:notifications:create
      - OIDC:
        - fueling:notifications:create
      summary: 'Deliver notification

        '
      description: |
        Delivers a notification from a partner system to the PACE fueling system.

          * `406` is returned in case the vendor format is not unknown
          * `400` is returned in case the vendor format is not valid when comparing against the provided input (request body)
      parameters:
      - in: query
        name: vendor
        schema:
          type: string
        example: example
        description: Name of the vendor providing the notification. This will enforce
          a certain format depending on the vendor.
      requestBody:
        required: true
        description: The content depends on the vendor.
        content:
          application/json: {}
      responses:
        '201':
          description: Notification was successfully delivered.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
components:
  schemas:
    TransactionRequest:
      type: object
      properties:
        data:
          type: object
          required:
          - type
          - attributes
          properties:
            type:
              type: string
              enum:
              - transaction
            id:
              type: string
              format: uuid
              description: Transaction ID
              example: c3f037ea-492e-4033-9b4b-4efc7beca16c
            attributes:
              type: object
              required:
              - paymentToken
              - pumpId
              properties:
                paymentToken:
                  type: string
                  description: "'Value' field of the payment token (not the payment
                    token ID)"
                  example: 12c52345c1x34
                pumpId:
                  type: string
                  format: uuid
                  description: Pump ID
                  example: 460ffaad-a3c1-4199-b69e-63949ccda82f
                vin:
                  type: string
                  description: Vehicle identification number
                  example: 1B3EL46R36N102271
                mileage:
                  type: integer
                  description: Current mileage in meters
                  minimum: 0
                  maximum: 9999999999
                  example: 66435000
                priceIncludingVAT:
                  type: number
                  format: decimal
                  example: 69.34
                currency:
                  type: string
                  example: EUR
                  description: Currency as specified in ISO-4217.
                  pattern: "^[A-Z]{3}$"
                carFuelType:
                  type: string
                  description: Fuel type for cars, based on the EU fuel marking
                  enum:
                  - ron98
                  - ron98e5
                  - ron95e10
                  - diesel
                  - e85
                  - ron91
                  - ron95e5
                  - ron100
                  - dieselGtl
                  - dieselB7
                  - dieselB15
                  - dieselPremium
                  - lpg
                  - cng
                  - lng
                  - h2
                  - truckDiesel
                  - adBlue
                  - truckAdBlue
                  - truckDieselPremium
                  - truckLpg
                  - heatingOil
                  example: ron95e10
    Pump:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - pump
        id:
          type: string
          format: uuid
          description: Pump ID
          example: a166d498-a8d6-49f0-83ef-50a42dcf7748
        attributes:
          type: object
          properties:
            identifier:
              type: string
              description: Pump identifier
              example: '2'
            fuelingProcess:
              type: string
              enum:
              - postPay
              - preAuth
              - preAuthWithFuelType
              description: |
                The fueling process that has to be followed
                * `postPay` the pump is *free* and needs to be [paid](#operation/ProcessPayment) after fueling
                * `preAuth` the pump is *locked* and has to be [unlocked](#operation/ProcessPayment)
                * `preAuthWithFuelType` the pump is *locked* and has to be [unlocked](#operation/ProcessPayment), the `carFuelType` is required
              example: postPay
            status:
              type: string
              description: |
                Current pump status.
                * `free` the pump is free, fueling possible (nozzle not lifted), possible transitions *inUse*, *locked*, *outOfOrder*. Note: A transition from *free* to *locked* may implies the pump was pre-authorization was canceled.
                * `inUse` the pump is fueling, possible transitions *readyToPay*, *locked*, *outOfOrder*
                * `readyToPay` the pump can be payed using the post pay process, possible transitions *free*, *locked*, *outOfOrder*. Note: A transition from *readyToPay* to *free* implies the pump was paid.
                * `locked` the pump required a pre-authorization, possible transitions *free*, *inTransaction*, *outOfOrder*. Note: A transition from *locked* to *free* implies the pre-authorization was successful.
                * `inTransaction` the pump is in use by another user using the pre-authorization process, possible transitions *locked*, *outOfOrder*
                * `outOfOrder` the pump has a technical problem, this can only be resolved by the gas station staff on site, possible transitions *free*, *locked*. Note: The customer has to pay in the shop
              enum:
              - free
              - inUse
              - readyToPay
              - locked
              - inTransaction
              - outOfOrder
            fuelType:
              type: string
              example: ron95e10
            productName:
              type: string
              example: Super E10
            fuelAmount:
              type: number
              format: decimal
              description: Fuel amount in liters
              example: 44.3
            pricePerUnit:
              type: number
              format: decimal
              description: Fuel price in CUR/liter
              example: 1.359
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 9.72
                rate:
                  type: number
                  format: decimal
                  example: 0.19
            priceWithoutVAT:
              type: number
              format: decimal
              example: 51.37
            priceIncludingVAT:
              type: number
              format: decimal
              example: 61.09
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            transactionId:
              type: string
              format: uuid
              example: e809fcfc-5fdd-4fba-9d3c-2b56c22d643c
              description: Provided if the user pre-authorized the pump
    PumpResponse:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - pump
        id:
          type: string
          format: uuid
          description: Pump ID
          example: a166d498-a8d6-49f0-83ef-50a42dcf7748
        attributes:
          type: object
          properties:
            identifier:
              type: string
              description: Pump identifier
              example: '2'
            fuelingProcess:
              type: string
              enum:
              - postPay
              - preAuth
              - preAuthWithFuelType
              description: |
                The fueling process that has to be followed
                * `postPay` the pump is *free* and needs to be [paid](#operation/ProcessPayment) after fueling
                * `preAuth` the pump is *locked* and has to be [unlocked](#operation/ProcessPayment)
                * `preAuthWithFuelType` the pump is *locked* and has to be [unlocked](#operation/ProcessPayment), the `carFuelType` is required
              example: postPay
            status:
              type: string
              description: |
                Current pump status.
                * `free` the pump is free, fueling possible (nozzle not lifted), possible transitions *inUse*, *locked*, *outOfOrder*. Note: A transition from *free* to *locked* may implies the pump was pre-authorization was canceled.
                * `inUse` the pump is fueling, possible transitions *readyToPay*, *locked*, *outOfOrder*
                * `readyToPay` the pump can be payed using the post pay process, possible transitions *free*, *locked*, *outOfOrder*. Note: A transition from *readyToPay* to *free* implies the pump was paid.
                * `locked` the pump required a pre-authorization, possible transitions *free*, *inTransaction*, *outOfOrder*. Note: A transition from *locked* to *free* implies the pre-authorization was successful.
                * `inTransaction` the pump is in use by another user using the pre-authorization process, possible transitions *locked*, *outOfOrder*
                * `outOfOrder` the pump has a technical problem, this can only be resolved by the gas station staff on site, possible transitions *free*, *locked*. Note: The customer has to pay in the shop
              enum:
              - free
              - inUse
              - readyToPay
              - locked
              - inTransaction
              - outOfOrder
            fuelType:
              type: string
              example: ron95e10
            productName:
              type: string
              example: Super E10
            fuelAmount:
              type: number
              format: decimal
              description: Fuel amount in liters
              example: 44.3
            pricePerUnit:
              type: number
              format: decimal
              description: Fuel price in CUR/liter
              example: 1.359
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 9.72
                rate:
                  type: number
                  format: decimal
                  example: 0.19
            priceWithoutVAT:
              type: number
              format: decimal
              example: 51.37
            priceIncludingVAT:
              type: number
              format: decimal
              example: 61.09
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            transactionId:
              type: string
              format: uuid
              example: e809fcfc-5fdd-4fba-9d3c-2b56c22d643c
              description: Provided if the user pre-authorized the pump
    FuelPrice:
      type: object
      properties:
        type:
          type: string
          description: Fuel price
          enum:
          - fuelPrice
        id:
          type: string
          description: Fuel Price ID
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        attributes:
          type: object
          properties:
            fuelType:
              type: string
              description: Fuel type for cars, based on the EU fuel marking
              enum:
              - ron98
              - ron98e5
              - ron95e10
              - diesel
              - e85
              - ron91
              - ron95e5
              - ron100
              - dieselGtl
              - dieselB7
              - dieselB15
              - dieselPremium
              - lpg
              - cng
              - lng
              - h2
              - truckDiesel
              - adBlue
              - truckAdBlue
              - truckDieselPremium
              - truckLpg
              - heatingOil
              example: ron95e10
            price:
              type: number
              format: decimal
              description: Price in liters
              example: 1.379
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            productName:
              type: string
              example: Super E10
    FuelPriceResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
              description: Fuel price
              enum:
              - fuelPrice
            id:
              type: string
              description: Fuel Price ID
              example: 2a1319c3-c136-495d-b59a-47b3246d08af
            attributes:
              type: object
              properties:
                fuelType:
                  type: string
                  description: Fuel type for cars, based on the EU fuel marking
                  enum:
                  - ron98
                  - ron98e5
                  - ron95e10
                  - diesel
                  - e85
                  - ron91
                  - ron95e5
                  - ron100
                  - dieselGtl
                  - dieselB7
                  - dieselB15
                  - dieselPremium
                  - lpg
                  - cng
                  - lng
                  - h2
                  - truckDiesel
                  - adBlue
                  - truckAdBlue
                  - truckDieselPremium
                  - truckLpg
                  - heatingOil
                  example: ron95e10
                price:
                  type: number
                  format: decimal
                  description: Price in liters
                  example: 1.379
                currency:
                  type: string
                  example: EUR
                  description: Currency as specified in ISO-4217.
                  pattern: "^[A-Z]{3}$"
                productName:
                  type: string
                  example: Super E10
    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
            twoFactor:
              type: boolean
              description: indicates if the payment method kind requires two factors
                later on
              example: true
            fuelcard:
              type: boolean
              description: Indicates whether the payment method is a fuel card. Fuelcard
                `no` means no.
              example: false
            implicit:
              type: boolean
              description: |
                Indicates whether the payment method can be onboarded/modified. Implict `true` means no. Otherwise yes.
                Most payment method kinds are no implicit, i.e., `implicit=false`.
                This field is optional and if not present should be assumed to indicate `implicit=false`.
              example: true
            vendorPRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) to payment method vendors
              example:
              - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
              - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
            dataPrivacy:
              type: object
              description: data privacy information
              properties:
                hint:
                  type: object
                  description: Localized hint that data privacy terms apply. The hint
                    comes formatted in multiple ways, which are all equally valid
                    if given. Additional formats might be added in the future.
                  properties:
                    markdown:
                      type: string
                      description: Hint formatted as markdown. Contains only links
                        to the reference <code>terms</code>. Does not contain other
                        links. Other than that, only contains markdown syntax for
                        <a href="https://daringfireball.net/projects/markdown/syntax#p">Paragraphs
                        and Line Breaks</a> and <a href="https://daringfireball.net/projects/markdown/syntax#em">Emphasis</a>.
                      example: Please read the [payment terms][terms] _carefully_.
                terms:
                  type: object
                  description: Localized data privacy terms. The terms come formatted
                    in multiple ways, which are all equally valid if given. Additional
                    formats might be added in the future.
                  properties:
                    markdown:
                      type: string
                      description: Terms formatted as markdown. Does not contain external
                        resources like images.
                      example: |
                        # Terms & Conditions

                        Lorem ipsum ...
    PaymentMethod:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethod
        id:
          type: string
          description: Payment Method ID
          example: e2e06fb6-5dd8-47d9-a5ac-e28fad440dd1
        attributes:
          type: object
          properties:
            kind:
              type: string
              description: one of sepa, creditcard, paypal, paydirekt, dkv, applepay,
                ...
            identificationString:
              type: string
              example: DEUTSCHEBANK XX 3000
            vendorPRN:
              type: string
              description: PACE resource name(s) to payment method vendor
              example: prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
            twoFactor:
              type: boolean
              description: indicates if the payment method kind requires two factors
                later on
              example: true
        meta:
          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
    ProcessPaymentResponse:
      type: object
      properties:
        type:
          type: string
          enum:
          - transaction
        id:
          type: string
          format: uuid
          description: Transaction ID
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        attributes:
          type: object
          properties:
            paymentToken:
              type: string
              example: 12c52345c1x34
            gasStationId:
              type: string
              format: uuid
              example: a6ec9bd7-cf0b-416c-b24f-9ce65ab3dfe1
            pumpId:
              type: string
              format: uuid
              example: 460ffaad-a3c1-4199-b69e-63949ccda82f
            vin:
              type: string
              description: Vehicle identification number
              example: 1B3EL46R36N102271
            mileage:
              description: Mileage in meters
              type: integer
              example: 66435000
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 11.07
                rate:
                  type: number
                  format: decimal
                  example: 0.19
            priceWithoutVAT:
              type: number
              format: decimal
              example: 58.27
            priceIncludingVAT:
              type: number
              format: decimal
              example: 69.34
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
    GetPumpsResponse:
      type: object
      properties:
        type:
          type: string
          enum:
          - getPumps
        id:
          type: string
          format: uuid
          description: request ID
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        relationships:
          type: object
          properties:
            pumps:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - pump
                      id:
                        type: string
                        format: uuid
                        description: Pump ID
                        example: a166d498-a8d6-49f0-83ef-50a42dcf7748
    ApproachingResponse:
      type: object
      properties:
        type:
          type: string
          enum:
          - approaching
        id:
          type: string
          format: uuid
          description: Approaching ID
          example: c3f037ea-492e-4033-9b4b-4efc7beca16c
        relationships:
          type: object
          properties:
            gasStation:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                      - gasStation
                    id:
                      type: string
                      format: uuid
                      description: Gas Station ID
                      example: 93db55b6-a9ab-4597-a253-49a1718cea0a
            paymentMethods:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - paymentMethod
                      id:
                        type: string
                        format: uuid
                        description: Payment Method ID
                        example: a166d498-a8d6-49f0-83ef-50a42dcf7748
            unsupportedPaymentMethods:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - paymentMethod
                      id:
                        type: string
                        format: uuid
                        description: Payment Method ID
                        example: a166d498-a8d6-49f0-83ef-50a42dcf7748
            supportedPaymentMethodKinds:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - paymentMethodKind
                      id:
                        type: string
                        description: Payment method kind
                        example: sepa
    GasStation:
      type: object
      properties:
        type:
          type: string
          enum:
          - gasStation
        id:
          type: string
          format: uuid
          description: Gas Station ID
          example: d7101f72-a672-453c-9d36-d5809ef0ded6
        attributes:
          type: object
          properties:
            latitude:
              type: number
              format: float
              example: 49.013
            longitude:
              type: number
              format: float
              example: 8.425
            stationName:
              type: string
              example: PACE Station
            address:
              type: object
              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.
            openingHours:
              "$ref": "#/components/schemas/CommonOpeningHours"
            amenities:
              type: array
              items:
                type: string
              example:
              - restaurant
            paymentMethods:
              type: array
              items:
                type: string
                description: one of sepa, creditcard, paypal, paydirekt, dkv, applepay,
                  ...
              example:
              - sepa
            lastUpdateTime:
              type: string
              format: date-time
              description: Time of last update of this gas station's fuel prices
              example: '2020-01-01T00:00:00'
        relationships:
          type: object
          properties:
            fuelPrices:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - fuelPrice
                      id:
                        type: string
                        format: uuid
                        description: Fuel Price ID
                        example: 486e1b37-10b5-4089-aa21-15dea6f0e01e
            pumps:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - pump
                      id:
                        type: string
                        format: uuid
                        description: Pump ID
                        example: c4bb2c5e-71fd-42ed-a664-471984e28f1f
    CommonOpeningHours:
      type: object
      properties:
        timezone:
          type: string
          description: As defined by ISO 8601, the timezone
          example: "+01:00"
        rules:
          type: array
          items:
            type: object
            properties:
              action:
                type: string
                default: open
                enum:
                - open
                - close
              days:
                type: array
                items:
                  type: string
                  enum:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
              timespans:
                type: array
                items:
                  type: object
                  properties:
                    from:
                      description: relative to the specified time zone (local time)
                      type: string
                      example: '07:30'
                    to:
                      description: relative to the specified time zone (local time)
                      type: string
                      example: '20:30'
      example:
        timezone: "+01:00"
        rules:
        - days:
          - monday
          - tuesday
          - wednesday
          - thursday
          - friday
          hours:
          - from: '06:00'
            to: '23:00'
        - days:
          - saturday
          hours:
          - from: '07:00'
            to: '23:00'
        - days:
          - sunday
          hours:
          - from: '07:00'
            to: '22:00'
    Errors:
      type: object
      description: |
        Error objects provide additional information about problems encountered while performing an operation.
        Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

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

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

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

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

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

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

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

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

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

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

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

        This is not relevant for most use-cases.

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

        Example:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        '
                      properties: {}
                      additionalProperties: true
  securitySchemes:
    OIDC:
      type: openIdConnect
      openIdConnectUrl: https://id.pace.cloud/auth/realms/pace/.well-known/openid-configuration
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/auth
          tokenUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
          refreshUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
          scopes:
            fueling:gas-stations:approaching: Get gas station information
            fueling:pumps:read: Get pump information
            fueling:transactions:create: Create a transaction
            fueling:transactions:delete: Cancel a Pre Auth transaction
            fueling:notifications:create: Create a new notification from a partner
              system
