{
  "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-1"
  },
  "servers": [
    {
      "url": "https://api.pace.cloud/poi/2024-1",
      "description": "Production server (stable release 2024-1)"
    }
  ],
  "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.\n\nTo search inside a specific radius around a given longitude and latitude provide the following query parameters:\n\n* latitude\n* longitude\n* radius\n\nTo search inside a bounding box provide the following query parameter:\n\n* boundingBox\n",
        "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.\n<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>\n",
            "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\n",
        "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.\n",
        "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\n",
        "description": "Get a list of map tiles in the Protobuf binary wire format.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/protobuf": {
              "schema": {
                "type": "string",
                "format": "binary",
                "description": "Protobuf binary wire format of the following definition\n```\nsyntax = \"proto3\";\n\nmessage TileQueryRequest {\n  uint32 zoom = 1;\n  repeated AreaQuery areas = 2;\n  repeated IndividualTileQuery tiles = 3;\n}\n\nmessage AreaQuery {\n  // if NE(1,1) + SW(1,1) == { tile(1,1) }\n  // if NE(2,1) + SW(1,2) == { tile(1,1), tile(2,1), tile(1,2), tile(2,2) }\n  Coordinate north_east = 1;\n  Coordinate south_west = 2;\n  uint64 invalidation_token = 3; // e.g. timestamp or sequence number\n}\n\nmessage IndividualTileQuery {\n  Coordinate geo = 1;\n  uint64 invalidation_token = 3; // e.g. timestamp or sequence number\n}\n\nmessage Coordinate {\n  uint32 x = 1; // tile coordinate\n  uint32 y = 2; // tile coordinate\n}\n```\n",
                "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\n```\nsyntax = \"proto3\";\n\nmessage TileQueryResponse {\n  uint32 zoom = 1;\n  repeated VectorTile vector_tiles = 2;\n  uint64 invalidation_token = 3;              // e.g. timestamp or sequence number\n  repeated Coordinate unavailable_tiles = 4;  // tile(s) couldn't be generated due to server issues\n}\n\nmessage VectorTile {\n  Coordinate geo = 1;\n  bytes vector_tiles = 3;\n}\n\nmessage Coordinate {\n  uint32 x = 1; // tile coordinate\n  uint32 y = 2; // tile coordinate\n}\n\n```\n",
                  "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\n",
        "description": "These location-based PACE apps deliver additional services for PACE customers based on their current position.\nYou can (or should) trigger this whenever:\n* A longer stand-still is detected\n* The engine is turned off\n* Every 5 seconds if the user \"left the road\"\n\nPlease note that calling this API is very cheap and can be done regularly.\n",
        "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.\nIn case the query returns a `404` (`Not Found`) the app was deleted and should be deleted from any caches.\n",
        "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.\n",
        "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>\n",
                "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`.\n",
                "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>\n",
                "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`.\n",
                "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": null
              },
              "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "OAuth token missing or invalid or a linked identity is missing.\n\nLinked identity missing is a special case where you need to make sure that\nthe user has additionally logged in / authorized with a third-party.\n\nThis is not relevant for most use-cases.\n\nThe specific error code that identifies a missing linked identity is `missing-linked-identity`\n\nExample:\n\n```\n  {\n      \"errors\": [\n          {\n              \"id\": \"cbgmhslmp1o9or9kh1p0\",\n              \"title\": \"Missing linked identity for authorized access\",\n              \"detail\": \"Linked identity is needed to access this resource, please check why the user does not have a linked identity\",\n              \"status\": \"401\",\n              \"code\": \"missing-linked-identity\"\n          }\n      ]\n  }\n```\n",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "NotAcceptable": {
        "description": "The specified accept header is invalid",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal server error",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "UnsupportedMediaType": {
        "description": "The specified content type header is invalid",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "UnprocessableEntity": {
        "description": "The request was well-formed but was unable to be followed due to semantic errors.",
        "content": {
          "application/vnd.api+json": {
            "schema": {
              "type": "object",
              "description": "Error objects provide additional information about problems encountered while performing an operation.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "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.\nErrors also contain codes besides title and message which can be used for checks even if the detailed messages might change.\n\n    * `1000`:  generic error\n    * `1001`:  payment processing temporarily unavailable\n    * `1002`:  requested amount exceeds the authorized amount of the provided token\n    * `1003`:  implicit payment methods cannot be modified\n    * `1004`:  payment method rejected by provider\n    * `provider:payment-method-rejected`:  payment method rejected by provider (identical to `1004`)\n    * `rule:product-denied`: Product restrictions forbid transaction, e.g., forbidden fuel type - token authorized only for Diesel but attempted to fuel Super.\n",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A unique identifier for this particular occurrence of the problem."
                      },
                      "links": {
                        "type": "object",
                        "properties": {
                          "about": {
                            "type": "string",
                            "description": "A link that leads to further details about this particular occurrence of the problem.\n"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "the HTTP status code applicable to this problem, expressed as a string value.\n"
                      },
                      "code": {
                        "type": "string",
                        "description": "an application-specific error code, expressed as a string value.\n"
                      },
                      "title": {
                        "type": "string",
                        "description": "A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.\n"
                      },
                      "detail": {
                        "type": "string",
                        "description": "a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.\n"
                      },
                      "source": {
                        "type": "object",
                        "description": "An object containing references to the source of the error.\n",
                        "properties": {
                          "pointer": {
                            "type": "string",
                            "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute].\n"
                          },
                          "parameter": {
                            "type": "string",
                            "description": "A string indicating which URI query parameter caused the error.\n"
                          }
                        }
                      },
                      "meta": {
                        "type": "object",
                        "description": "a meta object containing non-standard meta-information about the error.\n",
                        "properties": {},
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "OIDC": {
        "type": "openIdConnect",
        "openIdConnectUrl": "https://id.pace.cloud/auth/realms/pace/.well-known/openid-configuration"
      },
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/auth",
            "tokenUrl": "https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token",
            "refreshUrl": "https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token",
            "scopes": {
              "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"
            }
          }
        }
      }
    }
  }
}