Skip to content

Instantly share code, notes, and snippets.

@creckord
Last active August 9, 2021 09:10
Show Gist options
  • Save creckord/a2e09267f5fdfadc2cd75eedb3182b8a to your computer and use it in GitHub Desktop.
Save creckord/a2e09267f5fdfadc2cd75eedb3182b8a to your computer and use it in GitHub Desktop.
(Inoffizielle) Autobahn API OpenAPI 3.0 Spezifikation

Autobahn API als (Inoffizielle) OpenAPI 3.0 Spezifikation

Hier mal ein einfacher Aufschlag einer OpenAPI Spezifikation für die von Lilith Wittmann entdeckte API der neuen BMVI Autobahn-Info App

Die Definition basiert auf den Beispieldaten einiger Testaufrufe und wird sicher unvollständig und evtl teilweise inkorrekt sein...

openapi: "3.0.0"
info:
version: 1.0.0
title: Autobahn App API
description: |
API für aktuelle Verwaltungsdaten in Bezug auf Baustellen-Informationen, Webcams, Parkplätze, …
Danke an Lilith Wittmann
https://gist.github.com/LilithWittmann/06bd153317b635e7b622651f5cfd95ea
servers:
- url: https://verkehr.autobahn.de/o/autobahn
paths:
/:
get:
operationId: list-autobahnen
summary: Liste verfügbarer Autobahnen
description: Gibt eine Liste der verfügbaren Autobahnen zurück.
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Roads"
/{roadId}/services/roadworks:
get:
operationId: list-roadworks
summary: Liste aktueller Baustellen
description: Gibt eine Liste der aktuellen Baustellen zu einer Autobahn zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Roadworks"
/{roadId}/services/roadworks/{roadworkId}:
get:
operationId: get-roadwork
summary: Details einer Baustelle
description: Gibt Details zu einer konkreten Baustelle zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
- name: roadworkId
in: path
required: true
schema:
$ref: "#/components/schemas/Identifier"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Roadwork"
/{roadId}/services/webcam:
get:
operationId: list-webcams
summary: Liste verfügbarer Webcams
description: Gibt eine Liste der Webcams zu einer Autobahn zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Webcams"
# https://verkehr.autobahn.de/o/autobahn/details/webcam/%5BID%5D
/{roadId}/services/webcam/{webcamId}:
get:
operationId: get-webcam
summary: Details einer Webcam
description: Gibt Details einer konkreten Webcam zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
- name: webcamId
in: path
required: true
schema:
$ref: "#/components/schemas/Identifier"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Webcam"
/{roadId}/services/parking_lorry:
get:
operationId: list-parking-lorries
summary: Liste verfügbarer Rastplätze
description: Gibt eine Liste der Rastplätze zu einer Autobahn zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ParkingLorries"
/{roadId}/services/parking_lorry/{lorryId}:
get:
operationId: get-parking-lorry
summary: Details eines Rastplatzes
description: Gibt Details eines konkreten Rastplatzes zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
- name: lorryId
in: path
required: true
schema:
$ref: "#/components/schemas/Identifier"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ParkingLorry"
/{roadId}/services/warning:
get:
operationId: list-warnings
summary: Liste aktueller Verkehrsmeldungen
description: Gibt eine Liste der Verkehrsmeldungen zu einer Autobahn zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Warnings"
/{roadId}/services/warning/{warningId}:
get:
operationId: get-warning
summary: Details zu einer Verkehrsmeldung
description: Gibt Details zu einer konkreten Verkehrsmeldung zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
- name: warningId
in: path
required: true
schema:
$ref: "#/components/schemas/Identifier"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Warning"
/{roadId}/services/closure:
get:
operationId: list-closures
summary: Liste aktueller Sperrungen
description: Gibt eine Liste der Sperrungen zu einer Autobahn zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Closures"
/{roadId}/services/closure/{closureId}:
get:
operationId: get-closure
summary: Details zu einer Sperrung
description: Gibt Details zu einer konkreten Sperrung zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
- name: closureId
in: path
required: true
schema:
$ref: "#/components/schemas/Identifier"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Closure"
/{roadId}/services/electric_charging_station:
get:
operationId: list-charging-stations
summary: Liste aktueller Ladestationen
description: Gibt eine Liste der Ladestationen zu einer Autobahn zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ElectricChargingStations"
/{roadId}/services/electric_charging_station/{stationId}:
get:
operationId: get-charging-station
summary: Details zu einer Ladestation
description: Gibt Details zu einer konkreten Ladestation zurück.
parameters:
- name: roadId
in: path
required: true
schema:
$ref: "#/components/schemas/RoadId"
- name: stationId
in: path
required: true
schema:
$ref: "#/components/schemas/Identifier"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ElectricChargingStation"
components:
schemas:
Roads:
type: object
properties:
roads:
type: array
items:
$ref: '#/components/schemas/RoadId'
RoadId:
type: string
pattern: "A[0-9]+(?:/?A[0-9]+)*"
Extent:
type: string
pattern: '-?\d+(?:\.\d+)?,\s*-?\d+(?:\.\d+)?,\s*-?\d+(?:\.\d+)?,\s*-?\d+(?:\.\d+)?'
example: "10.728384054665147,54.00605746113356,10.775848767524598,54.09436740278899"
Point:
type: string
pattern: '-?\d+(?:\.\d+)?,\s*-?\d+(?:\.\d+)?'
example: "10.729057,54.006057"
Coordinate:
type: object
example: {
"lat": "54.006057",
"long": "10.729057"
}
properties:
lat:
$ref: '#/components/schemas/LatLongValue'
long:
$ref: '#/components/schemas/LatLongValue'
LatLongValue:
type: string
pattern: '-?\d+(?:\.\d+)?'
Identifier:
type: string
format: base64
MultilineText:
type: array
example: [
"Beginn: 29.06.2021 09:00",
"Ende: 28.11.2021 17:00",
"",
"Art der Maßnahme:Asphaltdeckenerneuerung",
"Einschränkungen:Es steht nur 1 Fahrstreifen zur Verfügung.\n\nVollsperrung der AS Eutin Ostseite vom 17.07.2021 - 15.09.2021.\n\nVollsperrung der AS Scharbeutz Ostseite vom 16.09.2021 - 17.11.2021.",
"Maximale Durchfahrsbreite: 3.25\n"
]
items:
type: string
IconRef:
type: string
DisplayType:
type: string
enum:
- ROADWORKS
- WEBCAM
- PARKING
- WARNING
- WEIGHT_LIMIT_35
- CLOSURE
- CLOSURE_ENTRY_EXIT
- STRONG_ELECTRIC_CHARGING_STATION
LorryParkingFeatureIcon:
type: object
example: {
"icon": "almofont almo-picnic_facility",
"description": "Picknickmöglichkeiten",
"style": ""
}
properties:
icon:
type: string
description:
type: string
style:
type: string
RoadItem:
type: object
properties:
extent:
$ref: '#/components/schemas/Extent'
identifier:
$ref: '#/components/schemas/Identifier'
routeRecommendation:
type: array
items:
# ???
type: object
coordinate:
$ref: '#/components/schemas/Coordinate'
footer:
$ref: '#/components/schemas/MultilineText'
icon:
$ref: '#/components/schemas/IconRef'
isBlocked:
# Anscheinend nicht wirklich... Aber Parser sollten das schlucken
type: boolean
description:
$ref: '#/components/schemas/MultilineText'
title:
type: string
point:
$ref: '#/components/schemas/Point'
display_type:
$ref: '#/components/schemas/DisplayType'
lorryParkingFeatureIcons:
type: array
items:
$ref: '#/components/schemas/LorryParkingFeatureIcon'
future:
type: boolean
subtitle:
type: string
RoadEvent:
allOf:
- $ref: '#/components/schemas/RoadItem'
- type: object
properties:
startTimestamp:
type: string
format: date-time
Roadworks:
type: object
properties:
roadworks:
type: array
items:
$ref: '#/components/schemas/Roadwork'
Roadwork:
example: {
"extent": "10.728384054665147,54.00605746113356,10.775848767524598,54.09436740278899",
"identifier": "Uk9BRFdPUktTX19tZG0uc2hfXzYzMTU=",
"routeRecommendation": [],
"coordinate": {
"lat": "54.006057",
"long": "10.729057"
},
"footer": [],
"icon": "123",
"isBlocked": "false",
"description": [
"Beginn: 29.06.2021 09:00",
"Ende: 28.11.2021 17:00",
"",
"Art der Maßnahme:Asphaltdeckenerneuerung",
"Einschränkungen:Es steht nur 1 Fahrstreifen zur Verfügung.\n\nVollsperrung der AS Eutin Ostseite vom 17.07.2021 - 15.09.2021.\n\nVollsperrung der AS Scharbeutz Ostseite vom 16.09.2021 - 17.11.2021.",
"Maximale Durchfahrsbreite: 3.25\n"
],
"title": "A1 | AS Pansdorf (17) - AS Neustadt-Mitte (14)",
"point": "10.729057,54.006057",
"display_type": "ROADWORKS",
"lorryParkingFeatureIcons": [],
"future": false,
"subtitle": "Lübeck Richtung Fehmarn",
"startTimestamp": "2021-06-29T09:00:00.000+0200"
}
allOf:
- $ref: '#/components/schemas/RoadEvent'
Webcams:
type: object
properties:
webcam:
type: array
items:
$ref: '#/components/schemas/Webcam'
Webcam:
example: {
"extent": "6.861151,50.987423,6.861151,50.987423",
"identifier": "V0VCQ0FNX19OUldfU2lsYS1TaWduYWxiYXVfMTAxMDgxMDk4ODE2NDgyOTQ4NTQ=",
"routeRecommendation": [],
"coordinate": {
"lat": "50.987423",
"long": "6.861151"
},
"footer": [
"ID: WEBCAM__NRW_Sila-Signalbau_10108109881648294854"
],
"icon": "webcam",
"isBlocked": "false",
"description": [],
"title": "A1 | ID005 AK Köln-Nord",
"operator": "NRW",
"point": "6.861151,50.987423",
"display_type": "WEBCAM",
"lorryParkingFeatureIcons": [],
"future": false,
"imageurl": "https://www.verkehr.nrw/webcams/10108109881648294854.jpg",
"subtitle": "Blickrichtung Dortmund",
"linkurl": "https://www.blitzvideoserver.de/player_strassennrw.html?serverip=62.113.210.7&serverapp=strassennrw-rtplive&streamname=10108109881648294854"
}
allOf:
- $ref: '#/components/schemas/RoadItem'
- type: object
properties:
operator:
type: string
imageurl:
type: string
format: uri
linkurl:
type: string
format: uri
ParkingLorries:
type: object
properties:
parking_lorry:
type: array
items:
$ref: '#/components/schemas/ParkingLorry'
ParkingLorry:
example: {
"extent": "10.979849815368652,54.362571716308594,10.979849815368652,54.362571716308594",
"identifier": "UEFSS0lOR19fbWRtLmxvcnJ5LnBhcmtpbmdfX0RFLVNILTAwMTEwOA==",
"routeRecommendation": [],
"coordinate": {
"lat": "54.362572",
"long": "10.979850"
},
"footer": [],
"icon": "314-50",
"isBlocked": "false",
"description": [
"PKW Stellplätze: 21 ",
"LKW Stellplätze: 20 "
],
"title": "A 1 | Richtung Puttgarden",
"point": "10.979850,54.362572",
"display_type": "PARKING",
"lorryParkingFeatureIcons": [
{
"icon": "almofont almo-picnic_facility",
"description": "Picknickmöglichkeiten",
"style": ""
},
{
"icon": "almofont almo-restroom",
"description": "Toilette vorhanden",
"style": ""
}
],
"future": false,
"subtitle": "(Ostseeblick S)"
}
allOf:
- $ref: '#/components/schemas/RoadItem'
Warnings:
type: object
properties:
warning:
type: array
items:
$ref: '#/components/schemas/Warning'
Warning:
example: {
"extent": "8.61785,52.97344,8.69904,53.00507",
"identifier": "V0FSTklOR19fbWRtLnZpel9fTE1TLU5JL3JfTE1TLU5JLzIxMjI2MF9EICBOSSBMTVMtTkkgIC4w",
"routeRecommendation": [],
"coordinate": {
"lat": "53.005070",
"long": "8.699040"
},
"footer": [],
"icon": "101",
"isBlocked": "false",
"description": [
"Beginn: 25.05.2021 00:00",
"Ende: 30.11.2021 23:59",
"",
"A1 Bremen Richtung Osnabrück",
"zwischen Dreieck Stuhr und Groß Ippener",
"Fahrbahnverengung, geänderte Verkehrsführung, Staugefahr, bis voraussichtlich 30.11.2021",
"Erweiterung PWC Kiekut."
],
"title": "A1 | AS Delmenhorst-Ost (58b) - AS Groß Ippener (59)",
"point": "8.699040,53.005070",
"display_type": "WARNING",
"lorryParkingFeatureIcons": [],
"future": false,
"subtitle": "Bremen Richtung Osnabrück",
"startTimestamp": "2021-05-25T00:00:00.000+0200"
}
allOf:
- $ref: '#/components/schemas/RoadEvent'
Closures:
type: object
properties:
closure:
type: array
items:
$ref: '#/components/schemas/Closure'
Closure:
example: {
"extent": "6.95325,51.02996,6.96491,51.03644",
"identifier": "Q0xPU1VSRV9fbWRtLnZpel9fTE1TLU5XL3JfTE1TLU5XLzMxNTEyMV9EICBOVyBMTVMtTlcuMA==",
"routeRecommendation": [],
"coordinate": {
"lat": "51.036440",
"long": "6.964910"
},
"footer": [],
"icon": "262-2",
"isBlocked": "false",
"description": [
"Beginn: 20.06.2021 14:19",
"Ende: 31.12.2025 23:59",
"",
"A1 Dortmund - Köln",
"Leverkusener Brücke",
"in beiden Richtungen gesperrt für LKW über 3,5 t, bis 31.12.2025"
],
"title": "A1 | AK Leverkusen-West (99) - AS Köln-Niehl (100)",
"point": "6.964910,51.036440",
"display_type": "WEIGHT_LIMIT_35",
"lorryParkingFeatureIcons": [],
"future": false,
"subtitle": "Dortmund Richtung Köln",
"startTimestamp": "2021-06-20T14:19:26.000+0200"
}
allOf:
- $ref: '#/components/schemas/RoadEvent'
ElectricChargingStations:
type: object
properties:
electric_charging_station:
type: array
items:
$ref: '#/components/schemas/ElectricChargingStation'
ElectricChargingStation:
example: {
"extent": "9.176298,53.090847,9.176298,53.090847",
"identifier": "RUxFQ1RSSUNfQ0hBUkdJTkdfU1RBVElPTl9fMTI2OTk=",
"routeRecommendation": [],
"coordinate": {
"lat": "53.090847",
"long": "9.176298"
},
"footer": [],
"icon": "charging_plug_strong",
"isBlocked": "false",
"description": [
"A1 | Bremen | Raststätte Grundbergsee Nord",
"27376 Sottrum",
"",
"Ladepunkt 1:",
"AC Kupplung Typ 2",
"43 kW",
"",
"Ladepunkt 2:",
"DC Kupplung Combo, DC CHAdeMO",
"50 kW"
],
"title": "A1 | Bremen | Raststätte Grundbergsee Nord",
"point": "9.176298,53.090847",
"display_type": "STRONG_ELECTRIC_CHARGING_STATION",
"lorryParkingFeatureIcons": [],
"future": false,
"subtitle": "Schnellladeeinrichtung"
}
allOf:
- $ref: '#/components/schemas/RoadItem'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment