---
openapi: 3.0.3
info:
  title: PACE POI API
  description: The PACE POI API handles Point of Interest (fueling stations) related
    actions.
  x-logo:
    url: https://developer.pace.car/images/logo_black.svg
  termsOfService: https://legal.pace.cloud/
  contact:
    name: PACE Developer Support
    url: https://developer.pace.cloud
    email: api-access@pace.car
  version: 2024-4
servers:
- url: https://api.pace.cloud/poi/2024-4
  description: Production server (preview release 2024-4)
paths:
  "/stats":
    get:
      tags:
      - Stats
      operationId: GetStats
      summary: Get statistics
      description: Provides overall statistics
      parameters:
      - in: query
        name: fields
        schema:
          type: string
        example: connectedStationsStats
        required: false
        description: Comma separated strings that represent the fields to be returned
          in the response alongside the default response
      - in: query
        name: includeAll
        schema:
          type: boolean
        example: false
        required: false
        description: Adds stats for stations that are coming soon
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Stats"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/gas-stations":
    get:
      tags:
      - Gas Stations
      operationId: GetGasStations
      security:
      - OAuth2:
        - poi:gas-stations:read
        - poi:gas-stations.references:read
      - OIDC:
        - poi:gas-stations:read
        - poi:gas-stations.references:read
      summary: Query for gas stations
      description: |
        There are two ways to search for gas stations in a geo location. You can use either one, or none, but not both ways.

        To search inside a specific radius around a given longitude and latitude provide the following query parameters:

        * latitude
        * longitude
        * radius

        To search inside a bounding box provide the following query parameter:

        * boundingBox
      parameters:
      - in: query
        name: page[number]
        schema:
          type: integer
        example: 1
        description: page number
      - in: query
        name: page[size]
        schema:
          type: integer
        example: 50
        description: items per page
      - in: query
        name: filter[appType]
        schema:
          type: array
          items:
            type: string
            enum:
            - fueling
        description: Search only gas stations with fueling app available
        example:
        - fueling
        style: form
        explode: false
      - in: query
        name: filter[latitude]
        schema:
          type: number
          format: float
          minimum: -85
          maximum: 85
        required: false
        description: Latitude in degrees
        example: 49.16
      - in: query
        name: filter[longitude]
        schema:
          type: number
          format: float
          minimum: -180
          maximum: 180
        required: false
        description: Longitude in degrees
        example: 8.23
      - in: query
        name: filter[radius]
        schema:
          type: number
          format: float
          minimum: 0
        required: false
        description: Radius in meters
        example: 5.4
      - in: query
        name: filter[boundingBox]
        schema:
          type: array
          items:
            type: number
            format: float
          minimum: -180
          maximum: 180
        required: false
        description: |
          Bounding box representing left, bottom, right, top in degrees. The query parameters need to be passed 4 times in exactly the order left, bottom, right, top.
          <table> <tr><th>#</th><th>Value</th><th>Lat/Long</th><th>Range</th></tr> <tr><td>0</td><td>left</td><td>Lat</td><td>[-180..180]</td></tr> <tr><td>1</td><td>bottom</td><td>Long</td><td>[-90..90]</td></tr> <tr><td>2</td><td>right</td><td>Lat</td><td>[-180..180]</td></tr> <tr><td>3</td><td>top</td><td>Long</td><td>[-90..90]</td></tr> </table>
        style: form
        explode: false
      - in: query
        name: filter[paymentMethod]
        description: Comma separated strings that filter stations according to supported
          payment methods.
        schema:
          type: string
        example: cofu:creditcard,cofu:paypal
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/GasStations"
                  included:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/components/schemas/FuelPrice"
                      - "$ref": "#/components/schemas/LocationBasedApp"
                      - "$ref": "#/components/schemas/ReferenceStatus"
              example:
                data:
                - type: gasStation
                  id: b86b67e9-7fae-4500-8885-45c8032056cc
                  attributes:
                    latitude: 49.013
                    longitude: 8.425
                    stationName: PACE Station
                    address:
                      street: Haid-und-Neu-Str.
                      houseNo: '18'
                      postalCode: '76131'
                      city: Karlsruhe
                      countryCode: DE
                    contact:
                      firstName: Max
                      lastName: Mustermann
                      gender: m
                      email: max.mustermann@pace.de
                      phoneNumber: "+49-175-5559-722"
                      faxNumber: "+49-175-5559-723"
                    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:
                    - toilet
                    paymentMethods:
                    - sepaDirectDebit
                    priceFormat: d.dds
                    references:
                    - prn:psp:sites:010876234876238991
                  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
                    locationBasedApps:
                      data:
                      - type: locationBasedApp
                        id: 89a072d1-0255-4abb-b863-c463e4b78453
                    referenceStatuses:
                      data:
                      - type: referenceStatus
                        id: prn:psp:sites:010876234876238991
                included:
                - type: fuelPrice
                  id: 6b5bff6f-74e1-40a1-9da0-72305292d939
                  attributes:
                    fuelType: ron95e5
                    price: 1.399
                    currency: EUR
                    productName: Super E5
                - type: fuelPrice
                  id: f563e0ee-ba9a-4869-8fe7-42639fcf375d
                  attributes:
                    fuelType: ron95e10
                    price: 1.379
                    currency: EUR
                    productName: Super E10
                - type: fuelPrice
                  id: cb1afd35-f531-4606-abc8-e1cfbc1f96f5
                  attributes:
                    fuelType: diesel
                    price: 1.239
                    currency: EUR
                    productName: Diesel
                - type: locationBasedApp
                  id: 89a072d1-0255-4abb-b863-c463e4b78453
                  attributes:
                    appType: fueling
                    title: PACE Fueling App
                    subtitle: Zahle bargeldlos mit der PACE Fueling App
                - type: referenceStatus
                  id: prn:psp:sites:010876234876238991
                  attributes:
                    updatedAt: '2018-06-01T00:00:00Z'
                    status: online
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/gas-stations/{id}":
    get:
      tags:
      - Gas Stations
      operationId: GetGasStation
      security:
      - OAuth2:
        - poi:gas-stations:read
        - poi:gas-stations.references:read
      - OIDC:
        - poi:gas-stations:read
        - poi:gas-stations.references:read
      summary: Get a specific gas station
      description: 'Returns an individual gas station

        '
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        example: be83d-a68d-41e3-9467-eb60442ff27b
        required: true
        description: Gas station ID
      responses:
        '200':
          description: OK
          headers:
            Expires:
              description: 'RFC 7234, section 5.3: Expires'
              schema:
                type: string
                example: Wed, 21 Oct 2015 07:28:00 GMT
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/GasStation"
                  included:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/components/schemas/FuelPrice"
                      - "$ref": "#/components/schemas/LocationBasedApp"
                      - "$ref": "#/components/schemas/ReferenceStatus"
              example:
                data:
                  type: gasStation
                  id: b86b67e9-7fae-4500-8885-45c8032056cc
                  attributes:
                    latitude: 49.013
                    longitude: 8.425
                    stationName: PACE Station
                    address:
                      street: Haid-und-Neu-Str.
                      houseNo: '18'
                      postalCode: '76131'
                      city: Karlsruhe
                      countryCode: DE
                    contact:
                      firstName: Max
                      lastName: Mustermann
                      gender: m
                      email: max.mustermann@pace.de
                      phoneNumber: "+49-175-5559-722"
                      faxNumber: "+49-175-5559-723"
                    openingHours:
                      timezone: "+01:00s"
                      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:
                    - toilet
                    paymentMethods:
                    - sepaDirectDebit
                    priceFormat: d.dds
                    references:
                    - prn:psp:sites:010876234876238991
                  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
                    locationBasedApps:
                      data:
                      - type: locationBasedApp
                        id: 89a072d1-0255-4abb-b863-c463e4b78453
                    referenceStatuses:
                      data:
                      - type: referenceStatus
                        id: prn:psp:sites:010876234876238991
                    successorOf:
                      data:
                      - type: gasStation
                        id: b86b67e9-7fae-4500-8885-45c8032056cc
                      - type: gasStation
                        id: a124aa35-8b67-2500-1113-45c8036789aa
                included:
                - type: fuelPrice
                  id: 6b5bff6f-74e1-40a1-9da0-72305292d939
                  attributes:
                    fuelType: ron95e5
                    fuelAmountUnit: Ltr
                    price: 1.399
                    currency: EUR
                    productName: Super E5
                - type: fuelPrice
                  id: f563e0ee-ba9a-4869-8fe7-42639fcf375d
                  attributes:
                    fuelType: ron95e10
                    fuelAmountUnit: Ltr
                    price: 1.379
                    currency: EUR
                    productName: Super E10
                - type: fuelPrice
                  id: cb1afd35-f531-4606-abc8-e1cfbc1f96f5
                  attributes:
                    fuelType: diesel
                    fuelAmountUnit: Ltr
                    price: 1.239
                    currency: EUR
                    productName: Diesel
                - type: locationBasedApp
                  id: 89a072d1-0255-4abb-b863-c463e4b78453
                  attributes:
                    appType: fueling
                    title: PACE Fueling App
                    subtitle: Zahle bargeldlos mit der PACE Fueling App
                - type: referenceStatus
                  id: prn:psp:sites:010876234876238991
                  attributes:
                    updatedAt: '2018-06-01T00:00:00Z'
                    status: online
        '301':
          "$ref": "#/components/responses/MovedPermanently"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '410':
          "$ref": "#/components/responses/Expired"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/gas-stations/{id}/fueltype":
    get:
      tags:
      - Gas Stations
      operationId: GetGasStationFuelTypeNameMapping
      security:
      - OAuth2:
        - poi:gas-stations:read
      - OIDC:
        - poi:gas-stations:read
      summary: Get a mapping from gas station specific fuel product name mapped to
        a normalized fuel type
      description: 'Every gas station potential has different names for the same fuel
        types. This endpoint accepts the gas station''s specific name and return a
        mapping where the specific name is mapped to a normalized version which should
        be globally the same across gas stations.

        '
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        example: be83d-a68d-41e3-9467-eb60442ff27b
        required: true
        description: Gas station ID
      - in: query
        name: filter[productName]
        schema:
          type: string
        example: Super Plus
        required: true
        description: Product Name
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/FuelType"
              example:
                data:
                  id: 7f558f59-b47b-4527-b9ed-b22749a51451
                  type: fuelType
                  attributes:
                    productName: Super Plus
                    fuelType: ron98e5
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/v1/tiles/query":
    post:
      tags:
      - Tiles
      operationId: GetTiles
      security:
      - OAuth2:
        - poi:tiles:read
      - OIDC:
        - poi:tiles:read
      summary: 'Query for tiles

        '
      description: 'Get a list of map tiles in the Protobuf binary wire format.

        '
      requestBody:
        required: true
        content:
          application/protobuf:
            schema:
              type: string
              format: binary
              description: |
                Protobuf binary wire format of the following definition
                ```
                syntax = "proto3";

                message TileQueryRequest {


                  uint32 zoom = 1;
                  repeated AreaQuery areas = 2;
                  repeated IndividualTileQuery tiles = 3;
                }

                message AreaQuery {


                  // if NE(1,1) + SW(1,1) == { tile(1,1) }
                  // if NE(2,1) + SW(1,2) == { tile(1,1), tile(2,1), tile(1,2), tile(2,2) }
                  Coordinate north_east = 1;
                  Coordinate south_west = 2;
                  uint64 invalidation_token = 3; // e.g. timestamp or sequence number
                }

                message IndividualTileQuery {


                  Coordinate geo = 1;
                  uint64 invalidation_token = 3; // e.g. timestamp or sequence number
                }

                message Coordinate {


                  uint32 x = 1; // tile coordinate
                  uint32 y = 2; // tile coordinate
                }
                ```
              x-protobuf-definition:
                version: proto3
                messages:
                  TileQueryRequest:
                    fields:
                      zoom:
                        field-type: uint32
                        field-number: 1
                      areas:
                        field-type: AreaQuery
                        field-number: 2
                        field-rule: repeated
                      tiles:
                        field-type: IndividualTileQuery
                        field-number: 3
                        field-rule: repeated
                  AreaQuery:
                    fields:
                      north_east:
                        field-type: Coordinate
                        field-number: 1
                      south_west:
                        field-type: Coordinate
                        field-number: 2
                      invalidation_token:
                        field-type: uint64
                        field-number: 3
                  IndividualTileQuery:
                    fields:
                      geo:
                        field-type: Coordinate
                        field-number: 1
                      invalidation_token:
                        field-type: uint64
                        field-number: 3
                  Coordinate:
                    fields:
                      x:
                        field-type: uint32
                        field-number: 1
                      "y":
                        field-type: uint32
                        field-number: 2
      responses:
        '200':
          description: OK
          content:
            application/protobuf:
              schema:
                type: string
                format: binary
                description: |
                  Protobuf binary wire format of the following definition
                  ```
                  syntax = "proto3";

                  message TileQueryResponse {


                    uint32 zoom = 1;
                    repeated VectorTile vector_tiles = 2;
                    uint64 invalidation_token = 3;              // e.g. timestamp or sequence number
                    repeated Coordinate unavailable_tiles = 4;  // tile(s) couldn't be generated due to server issues
                  }

                  message VectorTile {


                    Coordinate geo = 1;
                    bytes vector_tiles = 3;
                  }

                  message Coordinate {


                    uint32 x = 1; // tile coordinate
                    uint32 y = 2; // tile coordinate
                  }

                  ```
                x-protobuf-definition:
                  version: proto3
                  messages:
                    TileQueryResponse:
                      fields:
                        zoom:
                          field-type: uint32
                          field-number: 1
                        vector_tiles:
                          field-type: VectorTile
                          field-number: 2
                          field-rule: repeated
                        invalidation_token:
                          field-type: uint64
                          field-number: 3
                        unavailable_tiles:
                          field-type: Coordinate
                          field-number: 4
                          field-rule: repeated
                    VectorTile:
                      geo:
                        field-type: Coordinate
                        field-number: 1
                      vector_tiles:
                        field-type: bytes
                        field-number: 3
                    Coordinate:
                      fields:
                        x:
                          field-type: uint32
                          field-number: 1
                        "y":
                          field-type: uint32
                          field-number: 2
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '415':
          "$ref": "#/components/responses/UnsupportedMediaType"
        '422':
          "$ref": "#/components/responses/UnprocessableEntity"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/pois":
    get:
      tags:
      - POI
      operationId: GetPois
      security:
      - OAuth2:
        - poi:pois:read
        - poi:pois.references:read
      - OIDC:
        - poi:pois:read
        - poi:pois.references:read
      summary: Returns a paginated list of POIs
      description: Returns a paginated list of POIs optionally filtered by type, appId
        and/or query
      parameters:
      - in: query
        name: page[number]
        schema:
          type: integer
        example: 1
        description: page number
      - in: query
        name: page[size]
        schema:
          type: integer
        example: 50
        description: items per page
      - in: query
        name: filter[poiType]
        schema:
          "$ref": "#/components/schemas/POIType"
        description: Filter for poi type, no filter returns all types
      - in: query
        name: filter[appId]
        schema:
          type: string
          format: uuid
        example: be83d-a68d-41e3-9467-eb60442ff27b
        description: Filter id for app id, no filter returns pois for all apps
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/POIs"
                  included:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/components/schemas/ReferenceStatus"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/pois/{poiId}":
    get:
      tags:
      - POI
      operationId: GetPoi
      security:
      - OAuth2:
        - poi:pois:read
        - poi:pois.references:read
      - OIDC:
        - poi:pois:read
        - poi:pois.references:read
      summary: Returns POI with specified id
      description: Returns POI with specified id
      parameters:
      - in: path
        name: poiId
        schema:
          type: string
          format: uuid
        example: be83d-a68d-41e3-9467-eb60442ff27b
        description: ID of the POI
        required: true
      responses:
        '200':
          description: OK
          headers:
            Expires:
              description: 'RFC 7234, section 5.3: Expires'
              schema:
                type: string
                example: Wed, 21 Oct 2015 07:28:00 GMT
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/POI"
                  included:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/components/schemas/ReferenceStatus"
        '301':
          "$ref": "#/components/responses/MovedPermanently"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '410':
          "$ref": "#/components/responses/Expired"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/apps/query":
    get:
      tags:
      - Apps
      operationId: CheckForPaceApp
      security:
      - OAuth2:
        - poi:apps:read
      - OIDC:
        - poi:apps:read
      summary: 'Query for location-based apps

        '
      description: |
        These location-based PACE apps deliver additional services for PACE customers based on their current position.
        You can (or should) trigger this whenever:
        * A longer stand-still is detected
        * The engine is turned off
        * Every 5 seconds if the user "left the road"

        Please note that calling this API is very cheap and can be done regularly.
      parameters:
      - in: query
        name: filter[latitude]
        schema:
          type: number
          format: float
        required: true
        description: Latitude
        example: 48.123
      - in: query
        name: filter[longitude]
        schema:
          type: number
          format: float
        required: true
        description: Longitude
        example: 9.456
      - in: query
        name: filter[appType]
        schema:
          type: string
          enum:
          - fueling
        description: Type of location-based app
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/LocationBasedAppsWithRefs"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/apps/{appID}":
    get:
      tags:
      - Apps
      operationId: GetApp
      security:
      - OAuth2:
        - poi:apps:read
      - OIDC:
        - poi:apps:read
      summary: Returns App with specified id
      description: |
        Returns App with specified id.
        In case the query returns a `404` (`Not Found`) the app was deleted and should be deleted from any caches.
      parameters:
      - in: path
        name: appID
        schema:
          type: string
          format: uuid
        example: be83d-a68d-41e3-9467-eb60442ff27b
        description: ID of the App
        required: true
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/LocationBasedApp"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
  "/prices/regional":
    get:
      tags:
      - Prices
      operationId: GetRegionalPrices
      summary: Search for regional prices in the area
      description: 'Search for regional prices in the area centered at input latitude/longitude.
        Lower/Upper limits are set for each fuel type returned.

        '
      parameters:
      - in: query
        name: filter[latitude]
        schema:
          type: number
          format: float
          minimum: -85
          maximum: 85
        required: true
        description: Latitude in degrees
        example: 49.16
      - in: query
        name: filter[longitude]
        schema:
          type: number
          format: float
          minimum: -180
          maximum: 180
        required: true
        description: Longitude in degrees
        example: 8.23
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                "$ref": "#/components/schemas/RegionalPrices"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '406':
          "$ref": "#/components/responses/NotAcceptable"
        '500':
          "$ref": "#/components/responses/InternalServerError"
components:
  schemas:
    LocationBasedApp:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - locationBasedApp
        id:
          type: string
          format: uuid
          description: Location-based app ID
          example: f106ac99-213c-4cf7-8c1b-1e841516026b
        attributes:
          type: object
          properties:
            appType:
              type: string
              enum:
              - fueling
            title:
              type: string
              example: PACE Fueling App
            subtitle:
              type: string
              example: Zahle bargeldlos mit der PACE Fueling App
            logoUrl:
              type: string
              description: Logo URL
              example: http://via.placeholder.com/200x200
            pwaUrl:
              type: string
              description: 'Progressive web application URL. The URL satisfies the
                following criteria: <li>The URL responds with `text/html` on a GET
                request</li> <li>The response contains HTTP caching headers e.g. `Cache-Control`
                and `ETag`</li> <li>HTTP GET request on the URL with an `ETag` will
                return `304` (`Not Modified`), if the content didn''t change</li>
                <li>If `503` (`Service Unavailable`) is returned the request should
                be retried later</li> <li>If `404` (`Not Found`) is returned the URL
                is invalidated and a new app should be requested</li>

                '
              example: https://cdn.example.org/pwa/fueling.html
            androidInstantAppUrl:
              type: string
              description: Android instant app URL
              example: https://cdn.example.org/pwa/fueling.apk
            cache:
              description: 'A location-based app is by default loaded on `approaching`.
                Some apps should be loaded in advance. They have the cache set to
                `preload`.

                '
              type: string
              default: approaching
              enum:
              - approaching
              - preload
            createdAt:
              type: string
              format: date-time
              description: Time of LocationBasedApp creation (iso8601 without time
                zone)
              example: '2018-01-01T00:00:00'
            updatedAt:
              type: string
              format: date-time
              description: Time of LocationBasedApp last update (iso8601 without time
                zone)
              example: '2018-06-01T00:00:00'
            deletedAt:
              type: string
              format: date-time
              description: Time of LocationBasedApp deletion (iso8601 without time
                zone)
              example: '2018-12-01T00:00:00'
    LocationBasedApps:
      type: array
      items:
        "$ref": "#/components/schemas/LocationBasedApp"
    LocationBasedAppWithRefs:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - locationBasedAppWithRefs
        id:
          type: string
          format: uuid
          description: Location-based app ID
          example: f106ac99-213c-4cf7-8c1b-1e841516026b
        attributes:
          type: object
          properties:
            appType:
              type: string
              enum:
              - fueling
            title:
              type: string
              example: PACE Fueling App
            subtitle:
              type: string
              example: Zahle bargeldlos mit der PACE Fueling App
            logoUrl:
              type: string
              description: Logo URL
              example: http://via.placeholder.com/200x200
            pwaUrl:
              type: string
              description: 'Progressive web application URL. The URL satisfies the
                following criteria: <li>The URL responds with `text/html` on a GET
                request</li> <li>The response contains HTTP caching headers e.g. `Cache-Control`
                and `ETag`</li> <li>HTTP GET request on the URL with an `ETag` will
                return `304` (`Not Modified`), if the content didn''t change</li>
                <li>If `503` (`Service Unavailable`) is returned the request should
                be retried later</li> <li>If `404` (`Not Found`) is returned the URL
                is invalidated and a new app should be requested</li>

                '
              example: https://cdn.example.org/pwa/fueling.html
            androidInstantAppUrl:
              type: string
              description: Android instant app URL
              example: https://cdn.example.org/pwa/fueling.apk
            cache:
              description: 'A location-based app is by default loaded on `approaching`.
                Some apps should be loaded in advance. They have the cache set to
                `preload`.

                '
              type: string
              default: approaching
              enum:
              - approaching
              - preload
            references:
              type: array
              description: References are PRNs to external and internal resources
                that are related to the query
              items:
                type: string
              example:
              - prn:poi:gas-stations:24841a1c-39bd-422d-9164-d420e000243b
            createdAt:
              type: string
              format: date-time
              description: Time of LocationBasedApp creation (iso8601 without time
                zone)
              example: '2018-01-01T00:00:00'
            updatedAt:
              type: string
              format: date-time
              description: Time of LocationBasedApp last update (iso8601 without time
                zone)
              example: '2018-06-01T00:00:00'
            deletedAt:
              type: string
              format: date-time
              description: Time of LocationBasedApp deletion (iso8601 without time
                zone)
              example: '2018-12-01T00:00:00'
    LocationBasedAppsWithRefs:
      type: array
      items:
        "$ref": "#/components/schemas/LocationBasedAppWithRefs"
    FuelPrice:
      type: object
      properties:
        type:
          type: string
          description: Fuel price
          enum:
          - fuelPrice
        id:
          type: string
          format: uuid
          description: Fuel Price ID
          example: 2a1319c3-c136-495d-b59a-47b3246d08af
        attributes:
          type: object
          properties:
            fuelType:
              "$ref": "#/components/schemas/Fuel"
            price:
              description: per liter
              type: number
              format: decimal
              example: 1.379
            currency:
              type: string
              example: EUR
              description: Currency as specified in ISO-4217.
              pattern: "^[A-Z]{3}$"
            productName:
              type: string
              example: Super E10
            updatedAt:
              type: string
              format: date-time
              description: Time of FuelPrices last update iso8601 with microseconds
                UTC
              example: '2020-01-01T00:00:00'
    Stats:
      type: object
      properties:
        type:
          type: string
          enum:
          - stats
        id:
          type: string
        attributes:
          type: object
          properties:
            connectedFueling:
              type: integer
              description: Number of available CoFu stations
              example: 999
            connectedStationsStats:
              type: object
              properties:
                countries:
                  type: array
                  items:
                    type: object
                    properties:
                      countryCode:
                        type: string
                        example: DE
                      total:
                        type: integer
                        example: 14850
                      connectedFueling:
                        type: integer
                        example: 21
                brands:
                  type: array
                  items:
                    type: object
                    properties:
                      brand:
                        type: string
                        example: DE
                      total:
                        type: integer
                        example: 14850
                      connectedFueling:
                        type: integer
                        example: 21
    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
            brand:
              type: string
              example: Total
            brandID:
              type: string
              example: hoyer
            onlinePayment:
              type: object
              properties:
                online:
                  type: boolean
                  enum:
                  - true
                  - false
                  example: true
                paymentMethods:
                  type: array
                  items:
                    type: string
                  example:
                  - creditcard
                  - paypal
                  - dkv
                  - dkvAppAndGo:dkv
                  - pacePay
            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.
            contact:
              type: object
              properties:
                firstName:
                  type: string
                  example: Max
                lastName:
                  type: string
                  example: Mustermann
                gender:
                  type: string
                  enum:
                  - m
                  - f
                  - o
                  example: m
                email:
                  type: string
                  example: max.mustermann@pace.de
                phoneNumber:
                  type: string
                  example: "+49-175-5559-722"
                faxNumber:
                  type: string
                  example: "+49-175-5559-723"
            openingHours:
              "$ref": "#/components/schemas/CommonOpeningHours"
            postalServices:
              type: array
              items:
                type: string
              example:
              - gls
              - dhl
            services:
              type: array
              items:
                type: string
              example:
              - wifi
              - tyreAir
            shopGoods:
              type: array
              items:
                type: string
              example:
            loyaltyPrograms:
              type: array
              items:
                type: string
              example:
              - payback
            food:
              type: array
              items:
                type: string
              example:
              - restaurant
              - bakery
            amenities:
              type: array
              items:
                type: string
              example:
              - atm
              - truckParking
            paymentMethods:
              type: array
              example:
              - sepaDirectDebit
              - visa
              items:
                type: string
            priceFormat:
              type: string
              example: d.dds
            references:
              type: array
              description: References are PRNs to external and internal resources
                that are represented by this poi
              items:
                type: string
              example:
              - prn:psp:sites:010876234876238991
        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
            locationBasedApps:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - locationBasedApp
                      id:
                        type: string
                        format: uuid
                        description: Location-based app ID
                        example: 819fe1f6-9056-43d4-af3f-a7a712793339
            referenceStatuses:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - referenceStatus
                      id:
                        type: string
                        format: uuid
                        description: Service Provider resource PRN
                        example: prn:psp:sites:010876234876238991
            sucessorOf:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - gasStation
                      id:
                        type: string
                        format: uuid
                        description: GasStation ID which was superseded by this gas
                          station
                        example: a124aa35-8b67-2500-1113-45c8036789aa
    GasStations:
      type: array
      items:
        "$ref": "#/components/schemas/GasStation"
    POI:
      type: object
      properties:
        type:
          "$ref": "#/components/schemas/POIType"
        id:
          type: string
          format: uuid
          description: POI ID
          example: f106ac99-213c-4cf7-8c1b-1e841516026b
        attributes:
          type: object
          properties:
            countryId:
              "$ref": "#/components/schemas/CommonCountryId"
            position:
              "$ref": "#/components/schemas/CommonGeoJSONPoint"
            boundary:
              "$ref": "#/components/schemas/CommonGeoJSONPolygon"
            data:
              description: a JSON field containing POI specific data
              type: array
              items:
                "$ref": "#/components/schemas/FieldData"
            metadata:
              description: a JSON field containing information about data field origin
                and update time
              type: array
              items:
                "$ref": "#/components/schemas/FieldMetaData"
            active:
              type: boolean
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
            lastSeenAt:
              type: string
              format: date-time
            references:
              type: array
              description: References are PRNs to external and internal resources
                that are represented by this poi
              items:
                type: string
              example:
              - prn:psp:sites:010876234876238991
        relationships:
          type: object
          properties:
            referenceStatuses:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - referenceStatus
                      id:
                        type: string
                        format: uuid
                        description: Service Provider resource PRN
                        example: prn:psp:sites:010876234876238991
            sucessorOf:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - gasStation
                      id:
                        type: string
                        format: uuid
                        description: GasStation ID which was superseded by this gas
                          station
                        example: a124aa35-8b67-2500-1113-45c8036789aa
    POIs:
      type: array
      items:
        "$ref": "#/components/schemas/POI"
    FieldName:
      type: string
      enum:
      - name
      - brand
      - street
      - houseNumber
      - postCode
      - place
      - holidayIdentifier
      - operatingHours
      - fuelPrices
      x-valid-combinations:
        fuelStation:
        - name
        - brand
        - street
        - houseNumber
        - postCode
        - place
        - holidayIdentifier
        - operatingHours
        - fuelPrices
    FieldMetaData:
      type: object
      properties:
        field:
          "$ref": "#/components/schemas/FieldName"
        SourceId:
          type: string
          format: uuid
          description: Source ID
          example: f106ac99-213c-4cf7-8c1b-1e841516026b
        UpdatedAt:
          type: string
          format: date-time
    FieldData:
      type: object
      properties:
        field:
          "$ref": "#/components/schemas/FieldName"
        value:
          type: string
          description: escaped json
    POIType:
      type: string
      description: POI type this applies to
      enum:
      - GasStation
      - SpeedCamera
    ReferenceStatus:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - referenceStatus
        id:
          type: string
          description: Service Provider PRN
          example: prn:psp:sites:010876234876238991
        attributes:
          type: object
          properties:
            status:
              type: string
              description: Availability status of the referenced resource
              enum:
              - online
              - offline
            updatedAt:
              type: string
              format: date-time
              description: Time of status last update (iso8601)
              example: '2018-06-01T00:00:00Z'
              readOnly: true
    FuelType:
      type: object
      properties:
        type:
          type: string
          description: Type
          enum:
          - fuelType
        id:
          type: string
          description: FuelType ID
          example: f3ef9706-c406-4b11-8f4f-421ab1e651fa
        attributes:
          type: object
          properties:
            productName:
              type: string
              description: Product name.
            fuelType:
              type: string
              description: Normalized name, i.e., converted to a fuel type.
    RegionalPrices:
      type: object
      properties:
        data:
          type: array
          description: Regional prices
          items:
            type: object
            properties:
              type:
                type: string
                description: Type
                enum:
                - regionalPrices
              id:
                "$ref": "#/components/schemas/Fuel"
              attributes:
                type: object
                properties:
                  currency:
                    type: string
                    example: EUR
                    description: Currency as specified in ISO-4217.
                    pattern: "^[A-Z]{3}$"
                  lower:
                    type: number
                    format: decimal
                    example: 1.339
                    description: Price value indicator below which a price is considered
                      cheap
                  upper:
                    type: number
                    format: decimal
                    example: 1.449
                    description: Price value indicator after which a price is considered
                      expensive
                  average:
                    type: number
                    format: decimal
                    example: 1.359
                    description: Average price for this fuel type
    Fuel:
      type: string
      description: Fuel type for cars, based on the EU fuel marking
      example: ron95e10
    CommonCountryId:
      type: string
      description: Country this policy applies to (as ISO3166Alpha2)
      example: DE
      x-validator:
      - ISO3166Alpha2
    CommonGeoJSONPoint:
      type: object
      description: https://tools.ietf.org/html/rfc7946#section-3.1.2
      properties:
        type:
          type: string
          enum:
          - Point
          example: Point
        coordinates:
          type: array
          description: https://tools.ietf.org/html/rfc7946
          items:
            type: number
            format: float
          example:
          - -71.1043443253471
          - 42.3150676015829
    CommonGeoJSONPolygon:
      type: object
      description: https://tools.ietf.org/html/rfc7946#section-3.1.6; used as [bounding
        box](https://tools.ietf.org/html/rfc7946#section-5)
      properties:
        type:
          type: string
          enum:
          - Polygon
          example: Polygon
        coordinates:
          type: array
          items:
            type: array
            description: https://tools.ietf.org/html/rfc7946
            items:
              type: number
              format: float
            example:
            - -71.1043443253471
            - 42.3150676015829
          example:
          - - 8.424
            - 49.012
          - - 9.34
            - 49.1
          - - 8.424
            - 49.012
    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'
  responses:
    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
    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
    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
    NotAcceptable:
      description: The specified accept header is invalid
      content:
        application/vnd.api+json:
          schema:
            type: object
            description: |
              Error objects provide additional information about problems encountered while performing an operation.
              Errors also contain codes besides title and message which can be used for checks even if the detailed messages might change.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        '
                      properties: {}
                      additionalProperties: true
    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
    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
    MovedPermanently:
      description: Resource was permanently moved to new location
      headers:
        Location:
          type: string
    TemporaryRedirect:
      description: Resource was temporarily moved to new location
      headers:
        Location:
          type: string
    Expired:
      description: Resource is expired
      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:
            poi:apps:create: Create an app
            poi:apps:delete: Delete an app
            poi:apps:read: Get/search for an app
            poi:apps:update: Change an app
            poi:events:read: Get/search for events
            poi:gas-stations:read: Get/search for gas stations
            poi:gas-stations.references:read: Enabled additional reference data on
              the gas station
            poi:gas-stations.references:update: Write additional reference data on
              the gas station
            poi:pois:read: Get/search for pois
            poi:pois.references:read: Enabled additional reference data on the poi
            poi:pois:update: Update a poi
            poi:policies:create: Create a policy
            poi:policies:read: Get/search for policies
            poi:sources:create: Create a source
            poi:sources:delete: Delete a source
            poi:sources:read: Get/search for sources
            poi:sources:update: Update a source
            poi:subscriptions:read: List all subscriptions
            poi:subscriptions:create: Create a subscription
            poi:subscriptions:delete: Delete a subscription
            poi:tiles:read: Get/search for tiles
