---
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: 2022-1
servers:
- url: https://api.pace.cloud/fueling/2022-1
  description: Production server (stable release 2022-1)
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 currency/unit
            example: 1.379
          unit:
            type: string
            description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
              `kilogram`'
            example: liter
          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 units
            example: 44.3
          pricePerUnit:
            type: number
            format: decimal
            description: Fuel price in currency/unit
            example: 1.359
          unit:
            type: string
            description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
              `kilogram`'
            example: liter
          VAT:
            type: object
            properties:
              amount:
                type: number
                format: decimal
                example: 9.72
              rate:
                type: number
                format: decimal
                example: 0.19
          purposePRNs:
            type: array
            items:
              type: string
            description: 'Only if status is locked or readyToPay: PRNs required for
              creating a token for payment at this gas station'
            example:
            - prn:poi:gas-stations:93db55b6-a9ab-4597-a253-49a1718cea0a
            - prn:cms:fuels:ron95e5
          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
          transaction:
            "$ref": "#/components/schemas/Transaction"
paths:
  "/gas-stations/{gasStationId}/approaching":
    post:
      tags:
      - Fueling
      operationId: ApproachingAtTheForecourt
      security:
      - OAuth2:
        - fueling:gas-stations:approaching
        - fueling:transactions:read
      - OIDC:
        - fueling:gas-stations:approaching
        - fueling:transactions:read
      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.

        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.
        Other than authorization, the most common error states encountered should be:
          * 404, if the gas station does not exist or ConnectedFueling is not available at this station
          * 502, if there was a communication failure with a third party (e.g. the gas station in question fails to respond). Retry is possible
          * 503, if ConnectedFueling is available, but the site is offline
      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/GasStationNote"
                      - "$ref": "#/components/schemas/FuelPrice"
                      - "$ref": "#/components/schemas/Pump"
                      - "$ref": "#/components/schemas/PaymentMethod"
                      - "$ref": "#/components/schemas/PaymentMethodKind"
                      - "$ref": "#/components/schemas/Transaction"
              example:
                data:
                  type: approaching
                  id: c3f037ea-492e-4033-9b4b-4efc7beca16c
                  relationships:
                    gasStation:
                      data:
                        type: gasStation
                        id: 93db55b6-a9ab-4597-a253-49a1718cea0a
                    gasStationNote:
                      data:
                        type: gasStationNote
                        id: eb7a24cd-39c4-425d-8efd-36df7ef016cb
                    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: gasStationNote
                  id: eb7a24cd-39c4-425d-8efd-36df7ef016cb
                  attributes:
                    name: Hoyer CNG Notice
                    info: warn
                    text: CNG is not available for Connected Fueling yet!
                - type: fuelPrice
                  id: 6b5bff6f-74e1-40a1-9da0-72305292d939
                  attributes:
                    fuelType: ron95e5
                    unit: liter
                    price: 1.399
                    currency: EUR
                    productName: Super E5
                - type: fuelPrice
                  id: f563e0ee-ba9a-4869-8fe7-42639fcf375d
                  attributes:
                    fuelType: ron95e10
                    unit: liter
                    price: 1.379
                    currency: EUR
                    productName: Super E10
                - type: fuelPrice
                  id: cb1afd35-f531-4606-abc8-e1cfbc1f96f5
                  attributes:
                    fuelType: diesel
                    unit: liter
                    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"
        '410':
          "$ref": "#/components/responses/Gone"
        '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"
        '410':
          "$ref": "#/components/responses/Gone"
        '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
        - fueling:transactions:read
      - OIDC:
        - fueling:pumps:read
        - fueling:transactions: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
                    unit: liter
                    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"
        '410':
          "$ref": "#/components/responses/Gone"
        '500':
          "$ref": "#/components/responses/InternalServerError"
        '502':
          "$ref": "#/components/responses/BadGateway"
      deprecated: true
  "/gas-stations/{gasStationId}/pumps/{pumpId}/discounts":
    post:
      tags:
      - Discount
      operationId: InquireDiscountsForPump
      security:
      - OAuth2:
        - fueling:discounts:inquiry
      - OIDC:
        - fueling:discounts:inquiry
      summary: Inquires discounts from discount providers
      description: |
        The request inquires about discounts for a specific pump and needs to be used before authorizing the payment token. After a discount offer was given the token can be authorized with the discount id in order to activate the discount.
        This request is not idempotent and can return a different result on the second invocation.
        Only use this if the pump status is ready to pay, 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
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  "$ref": "#/components/schemas/DiscountInquiry"
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Discounts"
              example:
                data:
                - type: discount
                  id: a166d498-a8d6-49f0-83ef-50a42dcf7748
                  attributes:
                    title: Giropay discount campaign
                    amount: 1.5
                    provider: Giropay
        '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"
        '410':
          "$ref": "#/components/responses/Gone"
        '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.
        * The token will still be available for use in case the payment fails. It may need to be deleted by the caller

        ### Unattended Payment
        As an additional feature, the caller can - in case of Post Pay - opt for unattended payment. In summary, this means that when given a token with a certain authorized amount, the service will watch over the status of the fueling process and finish the transaction in the background, with no further user interaction required. This will only work if the amount fueled does not exceed the amount authorized in the token. Otherwise, an error response will be sent to the callback URL
        * `unattendedPayment` in the request body designates whether this should be done or not. Note that this is only
          possible if a valid token has been provided
        * `callbackURL` is an optional URL that will be called with what would usually be the response to the final
          `ProcessPayment` call after the process has finished
        * The token will still be available for use in case the payment fails. It may need to be deleted by the caller
        * This process is only available if the pump is in status `free`. Otherwise, `422` is returned.
        * The backend will wait for a grace period of 20 seconds after this call was sent before starting the process
      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, or unattended payment enqueued'
          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 an authorized transaction
      description: |
        ### Pre-Auth
        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.

        ### Unattended Payments
        Cancel an unattended payment process. This will only work if the payment was not already captured. Returns `404 Not Found` in case the unattended payment already went through.
      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
                unattendedPayment:
                  type: boolean
                  description: Set to 'true' if you want the payment to be cleared
                    automatically in the background after fueling
                  example: false
                callbackURL:
                  type: string
                  description: A callback URL to report the status of the transaction
                    to, once completed. Only relevant if unattendedPayment is true
                  example: https://my.fueling/pace/transaction-callback
                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
                numberPlate:
                  type: string
                  description: Number plate of the Vehicle
                  example: KA AM92
                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 units
              example: 44.3
            pricePerUnit:
              type: number
              format: decimal
              description: Fuel price in currency/unit
              example: 1.359
            unit:
              type: string
              description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
                `kilogram`'
              example: liter
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 9.72
                rate:
                  type: number
                  format: decimal
                  example: 0.19
            purposePRNs:
              type: array
              items:
                type: string
              description: 'Only if status is locked or readyToPay: PRNs required
                for creating a token for payment at this gas station'
              example:
              - prn:poi:gas-stations:93db55b6-a9ab-4597-a253-49a1718cea0a
              - prn:cms:fuels:ron95e5
            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
            transaction:
              "$ref": "#/components/schemas/Transaction"
    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 units
              example: 44.3
            pricePerUnit:
              type: number
              format: decimal
              description: Fuel price in currency/unit
              example: 1.359
            unit:
              type: string
              description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
                `kilogram`'
              example: liter
            VAT:
              type: object
              properties:
                amount:
                  type: number
                  format: decimal
                  example: 9.72
                rate:
                  type: number
                  format: decimal
                  example: 0.19
            purposePRNs:
              type: array
              items:
                type: string
              description: 'Only if status is locked or readyToPay: PRNs required
                for creating a token for payment at this gas station'
              example:
              - prn:poi:gas-stations:93db55b6-a9ab-4597-a253-49a1718cea0a
              - prn:cms:fuels:ron95e5
            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
            transaction:
              "$ref": "#/components/schemas/Transaction"
    DiscountInquiry:
      type: object
      required:
      - type
      - id
      - attributes
      properties:
        type:
          type: string
          description: Type
          enum:
          - discountInquiry
        id:
          type: string
          format: uuid
          description: Discount Inquiry id identifies the clients request uniquely
          example: a166d498-a8d6-49f0-83ef-50a42dcf7748
        attributes:
          type: object
          properties:
            paymentMethodId:
              type: string
              format: uuid
              description: UUID of the payment method that is intended to be used
                for the payment
              example: a2c93591-4ce7-42ee-8393-15bfa7239a62
            paymentMethodKind:
              type: string
              description: Payment Method Kind as name.
              example: paydirekt
    Discount:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - discount
        id:
          type: string
          format: uuid
          description: Discount ID
          example: a166d498-a8d6-49f0-83ef-50a42dcf7748
        attributes:
          type: object
          properties:
            title:
              type: string
              description: Line item
              example: Giropay promotion campaign
            amount:
              type: number
              format: decimal
              description: Amount in the currency of the pumps ready to pay amount
              example: 1.5
            provider:
              type: string
              description: Human readable name of the discount provider
              example: Giropay
    Discounts:
      type: array
      items:
        "$ref": "#/components/schemas/Discount"
    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 currency/unit
              example: 1.379
            unit:
              type: string
              description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
                `kilogram`'
              example: liter
            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 currency/unit
                  example: 1.379
                unit:
                  type: string
                  description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
                    `kilogram`'
                  example: liter
                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
            currencies:
              type: array
              items:
                type: string
              description: Currencies supported by payment method kind
              example:
              - EUR
              - PLN
            twoFactor:
              type: boolean
              description: indicates if the payment method kind requires two factors
                later on
              example: true
            fuelcard:
              type: boolean
              description: Indicates whether the payment method is a fuel card. Fuelcard
                `no` means no.
              example: false
            implicit:
              type: boolean
              description: |
                Indicates whether the payment method can be onboarded/modified. Implict `true` means no. Otherwise yes.
                Most payment method kinds are no implicit, i.e., `implicit=false`.
                This field is optional and if not present should be assumed to indicate `implicit=false`.
              example: true
            vendorPRNs:
              type: array
              items:
                type: string
              description: PACE resource name(s) to payment method vendors
              example:
              - prn:cms:payment-method-vendors:3af4b4a7-33fc-4930-9c2d-6eea7e488398
              - prn:cms:payment-method-vendors:d546bbe8-e707-43ae-8345-0709e30e710f
            dataPrivacy:
              type: object
              description: data privacy information
              properties:
                hint:
                  type: object
                  description: Localized hint that data privacy terms apply. The hint
                    comes formatted in multiple ways, which are all equally valid
                    if given. Additional formats might be added in the future.
                  properties:
                    markdown:
                      type: string
                      description: Hint formatted as markdown. Contains only links
                        to the reference <code>terms</code>. Does not contain other
                        links. Other than that, only contains markdown syntax for
                        <a href="https://daringfireball.net/projects/markdown/syntax#p">Paragraphs
                        and Line Breaks</a> and <a href="https://daringfireball.net/projects/markdown/syntax#em">Emphasis</a>.
                      example: Please read the [payment terms][terms] _carefully_.
                terms:
                  type: object
                  description: Localized data privacy terms. The terms come formatted
                    in multiple ways, which are all equally valid if given. Additional
                    formats might be added in the future.
                  properties:
                    markdown:
                      type: string
                      description: Terms formatted as markdown. Does not contain external
                        resources like images.
                      example: |
                        # Terms & Conditions

                        Lorem ipsum ...
            vendors:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: ID of the payment method vendor.
                    example: 3af4b4a7-33fc-4930-9c2d-6eea7e488398
                  slug:
                    type: string
                    example: visa
                  name:
                    type: string
                    example: VISA
                  logo:
                    type: object
                    properties:
                      href:
                        type: string
                        example: "/cms/images/payment-method-vendors/visa.png"
                      variants:
                        type: array
                        description: variants of the vendor's logo
                        items:
                          type: object
                          properties:
                            href:
                              type: string
                    x-examples:
                      vendorLogo-example:
                        href: "/cms/images/payment-method-vendors/visa.png"
                        variants:
                        - href: "/cms/images/payment-method-vendors/mastercard-dark.png"
                        - href: "/cms/images/payment-method-vendors/mastercard-light.png"
                  paymentMethodKindId:
                    type: string
                    example: creditcard
    PaymentMethod:
      type: object
      properties:
        type:
          type: string
          enum:
          - paymentMethod
        id:
          type: string
          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,
                ...
            status:
              type: string
              enum:
              - created
              - verified
              - pending
              - unacceptable
              example: verified
              description: |
                The desired status for a payment method is `verified`, this means the method is ready to use.
                A payment method that has the status `created` has yet to be verified. This is the case for payment methods,
                which have an asynchronous verification process, e.g., paydirekt (waiting for an email).
            identificationString:
              type: string
              example: DEUTSCHEBANK XX 3000
            alias:
              type: string
              description: Customer chosen alias for the payment method
              example: My wifes card
            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
            pacePay:
              type: boolean
              description: Identifies if the payment method is a PACE payment method
                (`true`) or a broker method (`false`)
              example: true
            mandatoryAuthorisationAttributes:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    example:
                    - vin
                    - mileage
                  maxLength:
                    type: integer
                  regex:
                    type: string
                description: Mandatory transaction attribute validator
                example:
                  maxLength: 8
                  regex: "[A-Z][0-9]+"
        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
            discountAmount:
              description: Amount that was discounted. Only if any discounts were
                applied earlier.
              type: number
              format: decimal
              example: 1.27
            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
            gasStationNote:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                      - gasStationNote
                    id:
                      type: string
                      format: uuid
                      description: Gas Station Note's ID
                      example: eb7a24cd-39c4-425d-8efd-36df7ef016cb
            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
            transactions:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - transaction
                      id:
                        type: string
                        description: transaction ID
                        example: 88b40caf-9add-47fc-a2f6-388de89a2b3a
    GasStationNote:
      type: object
      properties:
        type:
          type: string
          enum:
          - gasStationNote
        id:
          type: string
          format: uuid
          description: Gas Station Note's ID
          example: eb7a24cd-39c4-425d-8efd-36df7ef016cb
        attributes:
          type: object
          properties:
            name:
              type: string
              example: Hoyer CNG Notice
            info:
              type: string
              example: warn
            text:
              type: string
              example: CNG is not available for Connected Fueling yet!
    Transaction:
      type: object
      properties:
        type:
          type: string
          enum:
          - transaction
        id:
          type: string
          format: uuid
          description: Transaction ID
          example: 88b40caf-9add-47fc-a2f6-388de89a2b3a
        attributes:
          type: object
          properties:
            status:
              type: string
              example: announced
            authorizedAmount:
              type: number
              format: decimal
              example: 70
            PumpUUID:
              type: string
              format: uuid
              description: UUID of the pump this transaction was created on
              example: 44b3812b-c03b-414f-8b6b-1a80fcbdc28c
            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}$"
            pricePerUnit:
              type: number
              format: decimal
              example: 1.309
            unit:
              type: string
              description: 'Fuel measurement unit. Eg: `liter`, `us-gallon`, `uk-gallon`,
                `kilogram`'
              example: liter
            fuelType:
              type: string
              example: ron95e5
            fuelAmount:
              type: number
              format: decimal
              example: 52.97
            productName:
              type: string
              example: Super E5
            paymentToken:
              type: string
              example: 12c52345c1x34
            paymentTokenRestrictions:
              description: PRNs describing the restrictions (station and fuel types)
                for a token, if a token is provided
              type: array
              items:
                type: string
              example:
              - prn:cms:fuels:diesel
              - prn:poi:gas-stations:93db55b6-a9ab-4597-a253-49a1718cea0a
    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"
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            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
    Gone:
      description: Resource is gone
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

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

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

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

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

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

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

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

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

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

                        '
                      properties: {}
                      additionalProperties: true
    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:transactions:read: Get Pre Auth transaction information
            fueling:notifications:create: Create a new notification from a partner
              system
            fueling:discounts:inquiry: Inquire discounts for a specific pump
