coderis Vermittlungsprofil (CVP) Krankenbefoerderung API (0.5.0-draft.3)
Download OpenAPI specification:
Normativer Besteller-/Betreibervertrag fuer Krankenbefoerderung und allgemeinen Personentransport
Diese Datei ist die normative Vertragsquelle fuer CVP 0.5. Der Draft 0.5.0-draft.3 korrigiert im isolierten, nichtmedizinischen Personentransport die Akzeptanzsemantik fuer Assistenzhund und Haustier: eine akzeptierende Capability deckt Anfragen mit und ohne Tier ab. 0.5.0-draft.2 hatte den Personentransport additiv eingefuehrt. Die vorhandenen geschlossenen KF-/QKT-Booking-, Proposal-, TransportClass- und Webhook-Schemas bleiben unveraendert. Die bestehende Infektionskatalog- und Booking-Semantik aus 0.5.0-draft.1 gilt unveraendert fort. Organisation und Mandant werden ausschliesslich aus der verifizierten Systemidentitaet bestimmt; gleichnamige Body-, Query- oder Headerwerte sind unzulaessig.
Der Vertrag verwendet OAuth 2.0 Client Credentials nach RFC 6749, gehaertet nach RFC 9700. Er behauptet keine normative OAuth-2.1-Verfuegbarkeit.
Buchungen bestehen aus einem gemeinsamen journeyRef und mindestens einem
unabhaengig disponierbaren Leg mit stabilem legRef. Verordnung,
Genehmigung und Eligibility referenzieren ihren Umfang explizit ueber
legRefs; Outbound-Evidenz gilt nie automatisch fuer Return. Proposal-
Schemas sind datensparsame Whitelists, waehrend die Detailansicht erst dem
Gewinner zusteht. Das unveraenderlich referenzierte Regelprofil ist
DE-GKV-KT-RL-2025-08-06 in Version 2026-07-24.
Kompatibilitaetspolicy: Commands (Request-Bodies) sind strikt und lehnen unbekannte Felder ab. Ressourcen- und Ereignisantworten der Plattform duerfen additiv um Felder erweitert werden; Clients muessen unbekannte Antwortfelder ignorieren (tolerant reader). Ausgenommen sind die datensparsamen Proposal-Whitelists, die absichtlich geschlossen bleiben.
Server-Defaults: Fehlt ruleProfile im Create-Command, pinnt die
Plattform bei Admission das einzige veroeffentlichte Regelprofil
unveraenderlich in das Booking. Fehlt coverage.settlement bei
SELF_PAY, gilt PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT mit
acceptanceStatus NOT_APPLICABLE. Antworten enthalten die
materialisierten Werte immer explizit.
Strukturierte Pickup-Zeitfenster-Gegenvorschlaege sind ausschliesslich innerhalb des vorhandenen Proposal-Rejects zulaessig. Sie reservieren weder Fahrzeug noch Kapazitaet. Nach Auswahl einer aktiven Alternative disponiert die Plattform das Leg genau einmal erneut; der Betreiber prueft den Zeitpunkt in dieser Bestaetigungsrunde erneut.
Die Vorabpruefung ueber availability-checks ist eine kurzlebige,
unverbindliche und PII-minimierte Momentaufnahme vor createBooking.
Sie erzeugt weder Booking, Proposal, Transport noch Capacity-Hold. Alle
geeigneten availability-faehigen Betreiber werden unabhaengig von der
spaeteren Dispatchstrategie parallel geprueft; die normale Disposition
bewertet die Verfuegbarkeit nach der Transportanlage erneut.
Der Infektionsstammdaten-Katalog unter master-data/infections ist die
alleinige Quelle fuer oeffentliche MIND-Infektionscodes. Neue Booking-
Eingaben duerfen nur aktive Katalogcodes verwenden; der geschuetzte
Freitext displayName ist ausschliesslich fuer Code 1998 zulaessig und
dort verpflichtend.
Infektionsstammdaten-Katalog
Liefert den aktiven und historischen Infektionskatalog mit Code, Anzeigename, Aktivstatus und Freitext-Kennzeichen.
Authorizations:
query Parameters
| active | boolean Nur aktive Eintraege liefern (Default ist alle). |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "source": "MIND4.0VMBW",
- "sourceVersion": "1.0",
- "sourceAsOf": "2023-09-19",
- "catalogRevision": 1,
- "entries": [
- {
- "code": "1901",
- "displayName": "unklares Fieber",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1902",
- "displayName": "Meningitis - Encephalitis",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1903",
- "displayName": "Tbc (offen)",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1904",
- "displayName": "Infektioese Gastroenteritis",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1905",
- "displayName": "Infektion/Besiedlung mit Multiresistenten Erregern abgedeckt",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1906",
- "displayName": "Infektion/Besiedlung mit Multiresistenten Erregern offen",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1907",
- "displayName": "Viren (Hepatitis/HIV)",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1908",
- "displayName": "Viren (Influenza)",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1909",
- "displayName": "Hochkontagioese Erreger (SARS, HKLE, ...)",
- "active": true,
- "allowsFreeText": false
}, - {
- "code": "1998",
- "displayName": "sonstige Infektionserkrankungen",
- "active": true,
- "allowsFreeText": true
}
]
}Unqualifizierte Krankenfahrt mit einem oder mehreren Legs anlegen
Legt ein Booking idempotent im Zustand REQUESTED an. Vermittlung und Proposal-Erzeugung erfolgen asynchron. Vor dem 201 muss genau ein freigegebenes Intake-Service-Level bestimmt sein; andernfalls folgt 503 INTAKE_SERVICE_LEVEL_UNAVAILABLE ohne angelegtes Booking. Ist mit den eindeutig gepinnten Published-Inputs und der autoritativen Plattformzeit innerhalb der idempotenten Admission-Transaktion sicher belegt, dass das Policy-Zeitfenster bereits erschoepft ist, und greift kein Published-Short-Notice-Profil, folgt 412 POLICY_WINDOW_EXHAUSTED ohne Booking. Ein identischer Command mit demselben Idempotency-Key replayt diese gespeicherte Antwort ohne erneute Admission-Pruefung. Wird das Fenster erst nach einem erfolgreichen 201 erschoepft, bleibt das Booking angenommen und endet gegebenenfalls als NOT_SERVED mit reason POLICY_WINDOW_EXHAUSTED. Serien und Rueckfahrten werden als separat adressierbare Legs derselben Journey erfasst; Verordnungs- und Genehmigungsevidenz referenziert diese Legs explizit.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| transportClass required | string (TransportClass) Enum: "UNQUALIFIED_KRANKENFAHRT" "QUALIFIED_KTW" Exakte nationale Transportklasse. Klasse und operativer ServiceMode muessen semantisch zusammenpassen; es gibt keinen stillen Fallback. |
| journeyRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
required | object (PatientV3) |
required | Array of objects (JourneyLegInput) [ 1 .. 100 ] items unique |
required | object (Coverage)
|
required | object (OrdererCommand) organizationRef ist absichtlich nicht schreibbar; die Organisation stammt nur aus dem Token. |
object (RuleProfileRef) Optional; fehlt es, pinnt die Plattform bei Admission das einzige veroeffentlichte Regelprofil unveraenderlich. Wird es gesendet, muss es exakt matchen, sonst UNSUPPORTED_PROFILE. | |
Array of objects (Extension) |
Responses
Request samples
- Payload
{- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}
}
], - "coverage": {
- "type": "SELF_PAY"
}, - "orderer": {
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}
}Response samples
- 201
- 400
- 401
- 403
- 409
- 412
- 413
- 422
- 429
- 500
- 503
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Eigene Bookings cursorbasiert auflisten
Listet ausschliesslich Bookings der Organisation aus dem verifizierten Tokenkontext.
Authorizations:
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
| state | string (BookingState) Enum: "REQUESTED" "DISPATCHING" "CONFIRMED" "ASSIGNED" "ENROUTE" "ARRIVED" "IN_PROGRESS" "COMPLETED" "CANCELLED" "NOT_SERVED" Technische Dispatchfehler werden in |
| from | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ Examples: from=2026-07-13T07:50:00+02:00 Inklusiver Filter auf den effektiven Zeitanker des fruehesten Legs: pickupWindow.earliest, sonst arrivalBy, sonst treatmentAppointmentAt. Legs ohne jeden Zeitanker werden von from/to nicht ausgeschlossen. |
| to | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ Examples: to=2026-07-13T07:50:00+02:00 Exklusiver Filter auf denselben effektiven Zeitanker wie |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "items": [ ]
}Eigenes Booking lesen
Liefert ein organisationsbegrenztes Booking einschliesslich Assignment, soweit vorhanden.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Eigenes Booking idempotent stornieren
Storniert nach der Booking-Zustandsregel. Ab IN_PROGRESS ist ein normales Bestellerstorno unzulaessig. Quelle und Organisation werden aus der verifizierten Identitaet bestimmt und stehen nicht im Command.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| reason required | string Enum: "ORDERER_REQUEST" "DUPLICATE" "OTHER_CODED" |
| note | string (Note) [ 1 .. 255 ] characters Logistik-/Zugangshinweis ohne Diagnose oder medizinischen Freitext; erkannte Gesundheitsdaten ergeben HEALTH_DATA_REJECTED. |
Responses
Request samples
- Payload
{- "reason": "ORDERER_REQUEST",
- "note": "Fahrt wird nicht mehr benoetigt."
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Offenes Timing ergaenzen oder angebotene Zeit-Alternative auswaehlen
Aktualisiert ausschliesslich das adressierte Leg. Entweder wird das
vorhandene direkte timing fuer ein noch nicht disponierbares Leg
gesetzt oder genau eine aktive selectedTimeAlternativeId
ausgewaehlt. Die Auswahl ersetzt nur das Pickup-Fenster, behaelt andere
vorhandene Zeitanker bei und startet genau eine erneute Disposition.
Eine Alternative ist keine Reservierung oder Zusage; Verfuegbarkeit
wird in der neuen Bestaetigungsrunde erneut geprueft. Eine fehlende
Return-Zeit wird nie durch einen Ersatzwert ergaenzt.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
| legRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ Examples: ORG-4711-P-0032 Stabile, innerhalb des Bookings eindeutige Abschnittsreferenz. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| If-Match | string <= 128 characters ^"[^"]+"$ Optionale Precondition mit dem zuletzt gelesenen starken ETag. Weicht die aktuelle Ressourcenversion ab, folgt 412 PRECONDITION_FAILED ohne Wirkung. Ohne If-Match gilt Last-Write-Wins innerhalb der Idempotenzregeln. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
required | object (LegTiming) non-empty Mindestens ein Zeitanker; Kombinationen muessen plausibel sein. |
Responses
Request samples
- Payload
{- "timing": {
- "pickupWindow": {
- "earliest": "2026-08-10T08:00:00+02:00",
- "latest": "2026-08-10T08:15:00+02:00"
}
}
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Coverage und Settlement nach expliziter Bestellerentscheidung aktualisieren
Ein REJECTED-Abrechnungsweg wird nie still ersetzt; jede Alternative startet erst nach dieser idempotenten Bestellerentscheidung eine neue Vermittlungsrunde.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| If-Match | string <= 128 characters ^"[^"]+"$ Optionale Precondition mit dem zuletzt gelesenen starken ETag. Weicht die aktuelle Ressourcenversion ab, folgt 412 PRECONDITION_FAILED ohne Wirkung. Ohne If-Match gilt Last-Write-Wins innerhalb der Idempotenzregeln. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
required | object (Coverage)
|
| decision required | string Enum: "CLARIFY_COVERAGE" "SELECT_SELF_PAY" "SELECT_PATIENT_UPFRONT" "ACKNOWLEDGE_CONDITIONS" |
| acknowledgedConditionHash | string^[0-9a-f]{64}$ |
Responses
Request samples
- Payload
{- "coverage": {
- "type": "SELF_PAY",
- "payer": {
- "payerRef": "ORG-4711-P-0032",
- "institutionCode": "string",
- "regionalProfileRefs": [
]
}, - "insuredPerson": {
- "insuranceNumber": "string",
- "insuredStatus": "string"
}, - "insuredDataAcquisition": {
- "mode": "PROVIDED_WITH_BOOKING",
- "status": "COMPLETE"
}, - "settlement": {
- "route": "EXECUTING_PROVIDER_TO_COST_CARRIER",
- "requestedBillingParty": "EXECUTING_PROVIDER",
- "acceptanceStatus": "REQUESTED",
- "conditionCode": "string",
- "conditionHash": "string",
- "proposalRef": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e"
}, - "prescriptionEvidence": [
- {
- "evidenceRef": "ORG-4711-P-0032",
- "legRefs": [
- "ORG-4711-P-0032"
], - "form": "KBV_MUSTER_4",
- "issuedOn": "2019-08-24",
- "documentRef": "ORG-4711-P-0032",
- "status": "DECLARED",
- "prescriberRef": "ORG-4711-P-0032"
}
], - "authorizations": [
- {
- "authorizationRef": "ORG-4711-P-0032",
- "legRefs": [
- "ORG-4711-P-0032"
], - "status": "NOT_REQUIRED",
- "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "decidedOn": "2019-08-24",
- "validFrom": "2019-08-24",
- "validUntil": "2019-08-24",
- "approvedModes": [
- "TAXI_OR_HIRE_CAR"
]
}
], - "extensions": [
- {
- "profileId": "string",
- "version": "string",
- "scope": "BOOKING",
- "required": true,
- "privacyClass": "DISPATCH",
- "value": { }
}
]
}, - "decision": "CLARIFY_COVERAGE",
- "acknowledgedConditionHash": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Unverbindliche Live-Verfuegbarkeitspruefung starten
Persistiert idempotent eine kurzlebige, PII-minimierte Momentaufnahme
und einen haltbaren Pruefauftrag. Vor der 202-Antwort finden keine
Betreiberaufrufe statt. Der Check erzeugt weder Booking, Proposal,
Transport noch Capacity-Hold und veraendert den spaeteren
createBooking- und Dispatchfluss nicht. Ein identischer Command mit
demselben Idempotency-Key replayt die urspruengliche PENDING-Ressource
mit derselben Check-ID; ein abweichender Command liefert
CONFLICT_IDEMPOTENCY.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
required | Array of objects (AvailabilityCheckLegCommand) [ 1 .. 2 ] items unique |
Responses
Request samples
- Payload
{- "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "transportPurpose": "ADMISSION",
- "transportClass": "QUALIFIED_KTW",
- "pickupRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "dropoffRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-08-10T10:15:00+02:00",
- "latest": "2026-08-10T10:30:00+02:00"
}
}, - "service": {
- "mode": "KTW",
- "needs": [ ],
- "patientPosition": "SEATED",
- "oxygenRequirement": "NONE",
- "weightBelow150KgConfirmed": true,
- "monitoringRequired": false,
- "suctionRequired": false
}, - "infectionRequirement": {
- "status": "NOT_INFECTIOUS"
}, - "coverageMatch": {
- "coverageType": "SELF_PAY",
- "settlementRoute": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT"
}, - "estimates": {
- "distanceKm": 7.4,
- "approachKm": 3.1
}
}
]
}Response samples
- 202
- 400
- 401
- 403
- 409
- 413
- 422
- 429
- 500
{- "availabilityCheckId": "4f5e9a8c-1b2d-4c6f-8a90-123456789abc",
- "state": "PENDING",
- "completeness": "PENDING",
- "legs": [
- {
- "legRef": "LEG-SINGLE",
- "requestedTiming": {
- "pickupWindow": {
- "earliest": "2026-08-10T10:15:00+02:00",
- "latest": "2026-08-10T10:30:00+02:00"
}
}, - "assessment": "PENDING"
}
], - "createdAt": "2026-07-26T10:00:00+02:00",
- "softResultAt": "2026-07-26T10:00:08+02:00",
- "updatedAt": "2026-07-26T10:00:00+02:00",
- "expiresAt": "2026-07-26T10:01:00+02:00"
}Eigene Live-Verfuegbarkeitspruefung lesen
Liefert den aktuellen Checkzustand ohne eine neue Pruefung oder andere Seiteneffekte zu starten. Nur dieselbe verifizierte Organisation und derselbe authentifizierte Client wie beim POST duerfen die Ressource lesen. Fremde und nicht vorhandene IDs sind als 404 ununterscheidbar.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene, opake ID einer kurzlebigen Vorabpruefung. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "availabilityCheckId": "4f5e9a8c-1b2d-4c6f-8a90-123456789abc",
- "state": "COMPLETED",
- "completeness": "COMPLETE",
- "legs": [
- {
- "legRef": "LEG-SINGLE",
- "requestedTiming": {
- "pickupWindow": {
- "earliest": "2026-08-10T10:15:00+02:00",
- "latest": "2026-08-10T10:30:00+02:00"
}
}, - "assessment": "AVAILABLE"
}
], - "createdAt": "2026-07-26T10:00:00+02:00",
- "softResultAt": "2026-07-26T10:00:08+02:00",
- "updatedAt": "2026-07-26T10:00:03+02:00",
- "expiresAt": "2026-07-26T10:01:00+02:00"
}Chat eines eigenen Booking-Legs lesen
Liefert Nachrichten aufsteigend nach ihrer KTW-internen Reihenfolge. Message-IDs und Cursor sind opak. KTW bleibt alleinige Quelle; ein noch nicht angelegter, fremder oder nicht eindeutig der Organisation zugeordneter Thread erscheint einheitlich als 404.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
| legRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ Examples: ORG-4711-P-0032 Stabile, innerhalb des Bookings eindeutige Abschnittsreferenz. |
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 413
- 429
- 500
- 503
{- "items": [
- {
- "messageId": "string",
- "sender": {
- "type": "ORDERER",
- "label": "string"
}, - "content": "string",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "modifiedAt": "2026-07-13T07:50:00+02:00",
- "deletedAt": null
}
], - "nextCursor": "string",
- "readCursor": "string",
- "unreadCount": 0,
- "writable": true
}Nachricht in den Chat eines eigenen Booking-Legs senden
Speichert die Nachricht idempotent im bestehenden KTW-Thread. Nach Storno oder Abschluss bleibt der Thread lesbar, lehnt neue Nachrichten jedoch mit 409 CHAT_READ_ONLY ab.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
| legRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ Examples: ORG-4711-P-0032 Stabile, innerhalb des Bookings eindeutige Abschnittsreferenz. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| content required | string [ 1 .. 5000 ] characters |
Responses
Request samples
- Payload
{- "content": "string"
}Response samples
- 201
- 400
- 401
- 403
- 404
- 409
- 413
- 429
- 500
- 503
{- "message": {
- "messageId": "string",
- "sender": {
- "type": "ORDERER",
- "label": "string"
}, - "content": "string",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "modifiedAt": "2026-07-13T07:50:00+02:00",
- "deletedAt": null
}, - "readCursor": "string",
- "writable": true
}Organisationsweiten Lesecursor eines Booking-Leg-Chats fortschreiben
Markiert alle Nachrichten bis zum opaken Cursor organisationsweit als gelesen.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
| legRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ Examples: ORG-4711-P-0032 Stabile, innerhalb des Bookings eindeutige Abschnittsreferenz. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| cursor required | string [ 1 .. 1024 ] characters |
Responses
Request samples
- Payload
{- "cursor": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 413
- 429
- 500
- 503
{- "readCursor": "string",
- "markedCount": 0
}Eigene Dispatch-Proposals cursorbasiert auflisten
Polling-Fallback fuer dieselben PII-freien Proposal-Objekte wie im Proposal-Webhook.
Authorizations:
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
| state | string (ProposalState) Enum: "OFFERED" "ACCEPTED" "REJECTED" "COUNTERED" "EXPIRED" "WITHDRAWN" Example: state=OFFERED
|
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "items": [ ]
}Eigenes Dispatch-Proposal lesen
Liefert ein Proposal ohne Patientenklardaten und ohne Bestellerkontaktdaten.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Proposal-ID. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "proposalId": "7a99bdf5-77f0-4b57-8906-5f58230bc876",
- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "journeyRef": "JOURNEY-SELF-001",
- "legRef": "LEG-SINGLE",
- "state": "OFFERED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "pickupRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "dropoffRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "coverageMatch": {
- "coverageType": "SELF_PAY",
- "settlementRoute": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT"
}, - "estimates": {
- "distanceKm": 7.4,
- "approachKm": 3.1
}, - "sla": {
- "decisionBy": "2026-07-12T18:00:00+02:00"
}, - "counterOffersAllowed": true,
- "correlationId": "ed0dc0ac-f5d5-4f97-9f55-6d2e8d675ef0"
}Proposal atomar und verbindlich annehmen
Genau ein Proposal kann gewinnen. IMMEDIATE bindet Fahrzeug und ETA
sofort. DEFERRED ist nur fuer ein freigegebenes Partnerprofil erlaubt;
assignmentBy wird ausschliesslich von der Plattform bestimmt. Ein
Accept ist nur gueltig, wenn die nach allen Locks gelesene DB-Zeit strikt
vor decisionBy liegt. Ein wegen eines anderen Gewinners zurueckgezogenes
Proposal liefert 409 ALREADY_ASSIGNED; andere Withdrawals liefern
PROPOSAL_WITHDRAWN. Ein identischer Idempotenz-Replay liefert immer die
urspruenglich gespeicherte Antwort.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Proposal-ID. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| assignmentMode required | any Value: "IMMEDIATE" |
| vehicleRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
| eta required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
Responses
Request samples
- Payload
{- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "OP-1:V-12",
- "eta": "2026-07-13T07:58:00+02:00"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "proposalId": "7a99bdf5-77f0-4b57-8906-5f58230bc876",
- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "proposalState": "ACCEPTED",
- "bookingState": "CONFIRMED",
- "assignmentMode": "DEFERRED",
- "assignmentBy": "2026-07-12T18:10:00+02:00"
}Proposal ablehnen oder mit spaeteren Pickup-Fenstern gegenbieten
Lehnt ein noch offenes Proposal idempotent ab; nach Frist oder Rueckzug
gilt der jeweilige 409-Konflikt. Ausschliesslich bei
TIME_CONSTRAINT und counterOffersAllowed: true darf der Betreiber
ein bis drei eindeutige, vollstaendige und strikt spaetere
Pickup-Fenster mitsenden. Ein solcher Request schliesst das Proposal
terminal als COUNTERED. Er reserviert weder Fahrzeug noch Kapazitaet.
TIME_CONSTRAINT ohne Alternativen bleibt ein normaler Reject.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Proposal-ID. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| reason required | string (RejectReason) Enum: "NO_CAPACITY" "OUT_OF_AREA" "EQUIPMENT_MISMATCH" "TIME_CONSTRAINT" "TECHNICAL" PRICE_REJECTED entfaellt, solange Proposals keinen Preis enthalten; es kehrt erst mit einem Preismodell zurueck. |
| note | string (Note) [ 1 .. 255 ] characters Logistik-/Zugangshinweis ohne Diagnose oder medizinischen Freitext; erkannte Gesundheitsdaten ergeben HEALTH_DATA_REJECTED. |
Responses
Request samples
- Payload
{- "reason": "NO_CAPACITY"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 413
- 422
- 429
- 500
{- "proposalId": "7a99bdf5-77f0-4b57-8906-5f58230bc876",
- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "journeyRef": "JOURNEY-SELF-001",
- "legRef": "LEG-SINGLE",
- "state": "OFFERED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "pickupRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "dropoffRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "coverageMatch": {
- "coverageType": "SELF_PAY",
- "settlementRoute": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT"
}, - "estimates": {
- "distanceKm": 7.4,
- "approachKm": 3.1
}, - "sla": {
- "decisionBy": "2026-07-12T18:00:00+02:00"
}, - "counterOffersAllowed": true,
- "correlationId": "ed0dc0ac-f5d5-4f97-9f55-6d2e8d675ef0"
}Gewonnenes Booking mit Durchfuehrungsdaten lesen
Patientenklardaten sind erst nach atomar gewonnener Annahme und nur fuer den Gewinner sichtbar. Fremde und noch nicht gewonnene Ressourcen sind nicht von nicht existierenden Ressourcen unterscheidbar.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Gewonnenes Booking als Betreiber stornieren
Storniert idempotent nach der Zustandsregel. Eine laufende Fahrt ist kein normales Storno. Die Option-B-Connectorgrenze muss die KTW-Endlage anschliessend tenantbegrenzt bestaetigen. Nach CONFIRMED werden Import-, Kapazitaets- oder Assignmentfehler zuerst als booking.exception gemeldet und danach sichtbar mit OPERATOR_CANCELLED storniert. Es folgt kein automatischer Re-Dispatch und niemals NOT_SERVED.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| reason required | string Enum: "PATIENT_NOT_READY" "NO_SHOW" "OPERATOR_CANCELLED" "OTHER_CODED" |
| note | string (Note) [ 1 .. 255 ] characters Logistik-/Zugangshinweis ohne Diagnose oder medizinischen Freitext; erkannte Gesundheitsdaten ergeben HEALTH_DATA_REJECTED. |
Responses
Request samples
- Payload
{- "reason": "OPERATOR_CANCELLED",
- "note": "Fahrzeugbindung fehlgeschlagen; Eskalation wurde ausgeloest."
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Gewinner meldet zweckgebunden erfasste Versicherungsdaten
Nur der aktuelle Gewinner des adressierten Legs darf die spaet erfassten Fakten idempotent melden; Transportstatus und Claim-Readiness bleiben getrennt.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Booking-ID. |
| legRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ Examples: ORG-4711-P-0032 Stabile, innerhalb des Bookings eindeutige Abschnittsreferenz. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| If-Match | string <= 128 characters ^"[^"]+"$ Optionale Precondition mit dem zuletzt gelesenen starken ETag. Weicht die aktuelle Ressourcenversion ab, folgt 412 PRECONDITION_FAILED ohne Wirkung. Ohne If-Match gilt Last-Write-Wins innerhalb der Idempotenzregeln. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
required | object (InsuredDataAcquisition) |
required | object (InsuredPerson) |
| patientDateOfBirth | string <date> |
object (Payer) |
Responses
Request samples
- Payload
{- "insuredDataAcquisition": {
- "mode": "PROVIDED_WITH_BOOKING",
- "status": "COMPLETE"
}, - "insuredPerson": {
- "insuranceNumber": "string",
- "insuredStatus": "string"
}, - "patientDateOfBirth": "2019-08-24",
- "payer": {
- "payerRef": "ORG-4711-P-0032",
- "institutionCode": "string",
- "regionalProfileRefs": [
]
}
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "reference": "K-2527",
- "state": "REQUESTED",
- "transportClass": "UNQUALIFIED_KRANKENFAHRT",
- "journeyRef": "JOURNEY-SELF-001",
- "patient": {
- "patientRef": "PATIENT-001",
- "name": {
- "display": "Erika Mustermann"
}
}, - "legs": [
- {
- "legRef": "LEG-SINGLE",
- "direction": "SINGLE",
- "origin": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-HOME"
}, - "destination": {
- "kind": "FACILITY",
- "facilityRef": "FACILITY-PRACTICE"
}, - "timing": {
- "arrivalBy": "2026-08-10T09:00:00+02:00"
}, - "service": {
- "mode": "TAXI_OR_HIRE_CAR",
- "needs": [ ]
}, - "readiness": "READY_FOR_DISPATCH"
}
], - "coverage": {
- "type": "SELF_PAY",
- "settlement": {
- "route": "PATIENT_UPFRONT_WITHOUT_REIMBURSEMENT",
- "requestedBillingParty": "PATIENT",
- "acceptanceStatus": "NOT_APPLICABLE"
}
}, - "orderer": {
- "organizationRef": "ORG-4711",
- "facilityRef": "FACILITY-ORDERER",
- "channel": "API"
}, - "ruleProfile": {
- "profileId": "DE-GKV-KT-RL-2025-08-06",
- "version": "2026-07-24",
- "effectiveFrom": "2025-08-06"
}, - "claimReadiness": {
- "status": "READY_FOR_CLAIM"
}, - "createdAt": "2026-07-12T16:00:00+02:00",
- "updatedAt": "2026-07-12T16:00:00+02:00"
}Signiertes CVP-Ereignis empfangen Webhook
Die Plattform stellt mindestens einmal zu. Empfaenger deduplizieren per
eventId. kid waehlt exakt das aktuelle oder ein noch gueltiges vorheriges
Secret. Die Signatur ist HMAC-SHA-256 ueber t + "." + n + "." + body;
kid gehoert nicht zum MAC-Input. Es gelten ein Zeitfenster von plus/minus
fuenf Minuten und Nonce-Einmalverwendung.
Authorizations:
header Parameters
| X-Correlation-Id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Von der Plattform durchgereichte UUIDv4. |
| X-CVP-Signature required | string <= 300 characters ^kid=whk_[A-Za-z0-9_-]{43}, t=[0-9]{10,}, n=[... Example: kid=whk_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, t=1783872000, n=550e8400-e29b-41d4-a716-446655440000, v1=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= Signatur mit versionierter Secret-Selektion; |
Request Body schema: application/jsonrequired
| eventId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| type required | string Enum: "booking.requested" "booking.dispatching" "booking.confirmed" "booking.time_alternatives_available" "proposal.offered" "proposal.withdrawn" "booking.assigned" "vehicle.enroute" "vehicle.arrived" "trip.started" "trip.completed" "booking.cancelled" "booking.not_served" "booking.exception" "booking.eta_updated" |
| occurredAt required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
| bookingId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| legRef | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
| proposalId | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| sequence required | integer >= 1 |
required | object |
| correlationId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
Responses
Request samples
- Payload
{- "eventId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "type": "booking.requested",
- "occurredAt": "2026-07-13T07:50:00+02:00",
- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "legRef": "ORG-4711-P-0032",
- "proposalId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "sequence": 1,
- "data": {
- "state": "REQUESTED"
}, - "correlationId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e"
}Ein oder mehrere Betreiberereignisse idempotent melden
Der Betreiber liefert je Ereignis eine stabile sourceEventId und
optional eine eigene sourceSequence. Nur die Plattform vergibt die
kanonische, je Booking monotone sequence. Der Body ist immer ein
Array mit 1 bis 100 Ereignissen und wird als ein idempotenter
HTTP-Command behandelt. Fehlt legRef in einem Ereignis, ordnet die
Plattform es dem eindeutig gewonnenen Leg des Bookings zu; ist die
Zuordnung mehrdeutig, folgt 422 JOURNEY_SCOPE_CONFLICT.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| sourceEventId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| type required | string Value: "booking.assigned" |
| occurredAt required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
| bookingId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| legRef | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ Optional, wenn das Ereignis eindeutig genau einem gewonnenen Leg des Bookings zuzuordnen ist; die Plattform kanonisiert. Mehrdeutigkeit ergibt 422 JOURNEY_SCOPE_CONFLICT. Quittungen und Webhook-Envelopes tragen legRef immer. |
| proposalId | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| sourceSequence | integer >= 0 Optionale betreibereigene Sequenz; sie ist nie die kanonische CVP-Sequenz. |
required | object |
| correlationId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
Responses
Request samples
- Payload
[- {
- "sourceEventId": "3ea7b7c4-cefd-4e2c-8af5-c66a29f80ef3",
- "type": "booking.assigned",
- "occurredAt": "2026-07-13T07:55:00+02:00",
- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "legRef": "LEG-SINGLE",
- "sourceSequence": 1,
- "data": {
- "vehicleRef": "OP-MEDTAXI-RUHR:V-12"
}, - "correlationId": "ed0dc0ac-f5d5-4f97-9f55-6d2e8d675ef0"
}
]Response samples
- 202
- 400
- 401
- 403
- 404
- 409
- 413
- 422
- 429
- 500
{- "receipts": [
- {
- "sourceEventId": "3ea7b7c4-cefd-4e2c-8af5-c66a29f80ef3",
- "eventId": "8bf8aa74-a99e-44d8-91a5-29c892390894",
- "bookingId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "sequence": 4,
- "acceptedAt": "2026-07-13T07:55:01+02:00"
}
]
}Eigene Webhook-Subscription anlegen
Das Ziel muss vor Aktivierung gegen SSRF, DNS-Rebinding und die Onboarding-Allowlist validiert werden; das Secret wird genau einmal ausgegeben.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| targetUrl required | string <uri> <= 2048 characters ^https:// Vor Aktivierung gegen Onboarding-Allowlist, SSRF und DNS-Rebinding pruefen. |
| events required | Array of strings (WebhookEventType) non-empty unique Items Enum: "booking.requested" "booking.dispatching" "booking.time_alternatives_available" "proposal.offered" "proposal.withdrawn" "booking.confirmed" "booking.assigned" "vehicle.enroute" "vehicle.arrived" "trip.started" "trip.completed" "booking.cancelled" "booking.not_served" "booking.exception" "booking.eta_updated" |
Responses
Request samples
- Payload
{- "events": [
- "proposal.offered",
- "proposal.withdrawn",
- "booking.confirmed",
- "booking.cancelled"
]
}Response samples
- 201
- 400
- 401
- 403
- 409
- 413
- 422
- 429
- 500
{- "webhookId": "fa39e286-7332-490c-b26d-13df5358e9c1",
- "events": [
- "proposal.offered",
- "proposal.withdrawn",
- "booking.confirmed",
- "booking.cancelled"
], - "createdAt": "2026-07-12T16:10:00+02:00",
- "secret": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ",
- "secretKid": "whk_RqIZl4LIgn8KxW9QO-nTnv7pf0CnNrksx9fF-CXP2FE"
}Eigene Webhook-Subscriptions cursorbasiert auflisten
Secrets werden niemals erneut ausgegeben; die Liste ist organisationsbegrenzt und limitiert.
Authorizations:
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "items": [ ]
}Eigene Webhook-Subscription loeschen
Loescht eine eigene Subscription idempotent innerhalb des Idempotency-Key-Raums; fremde IDs erscheinen als NOT_FOUND.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene Subscription-ID. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 400
- 401
- 403
- 404
- 409
- 413
- 429
- 500
{- "code": "VALIDATION_ERROR",
- "message": "pickupWindow.latest liegt vor pickupWindow.earliest",
- "field": "pickupWindow.latest",
- "correlationId": "ed0dc0ac-f5d5-4f97-9f55-6d2e8d675ef0",
- "retriable": false
}Allgemeinen Personentransport anlegen
Legt genau eine nichtmedizinische Fahrt fuer eine Reisegruppe von einer bis acht Personen mit gemeinsamem Start, Ziel, Zahler und Fahrzeug idempotent im Zustand REQUESTED an. Vermittlung und Proposal-Erzeugung erfolgen asynchron. Medizinische Notwendigkeit, Verordnung, Betreuung, Isolation und GKV-Abrechnung werden fail-closed abgelehnt. Ein Availability-Check ist weder Voraussetzung noch Kapazitaetszusage.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| journeyRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
required | object (PersonTransportRoute) |
required | object or object (PersonTransportTiming) |
required | object (PersonTransportTravelParty) Genau eine zusammengehoerige Reisegruppe in genau einem Fahrzeug; memberRef und PRIMARY_TRAVELER sind semantisch eindeutig. |
required | object (PersonTransportRideContact) |
required | object (PersonTransportServiceRequirement) |
required | object or object or object (PersonTransportPaymentArrangement) |
required | object (PersonTransportMedicalExclusion) Expliziter Fail-closed-Nachweis; true ist mit PT unvereinbar. |
required | object (PersonTransportOrdererCommand) |
Responses
Request samples
- Payload
{- "journeyRef": "PT-2026-0001",
- "route": {
- "origin": {
- "address": {
- "street": "Hafenstrasse",
- "houseNumber": "1",
- "postcode": "48153",
- "city": "Muenster",
- "country": "DE"
}, - "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "Prinzipalmarkt",
- "houseNumber": "10",
- "postcode": "48143",
- "city": "Muenster",
- "country": "DE"
}, - "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "UNKNOWN",
- "contactOnArrival": false
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-08-15T12:00:00+02:00",
- "latest": "2026-08-15T12:15:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "P-1",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "Erika Mustermann"
}
}, - {
- "memberRef": "P-2",
- "role": "COMPANION",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT"
}
]
}, - "rideContact": {
- "name": {
- "display": "Erika Mustermann"
}, - "phone": "+49 251 123456"
}, - "service": {
- "vehicleProfile": "TAXI_OR_HIRE_CAR",
- "capacity": {
- "occupantCount": 2,
- "seatedPlaces": 2,
- "wheelchairPlaces": 0,
- "childRestraintCount": 0,
- "baggageUnits": 1
}, - "assistanceNeeds": [ ],
- "childRestraints": [ ],
- "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": false
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH_OR_CARD"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "FACILITY-ORDERER",
- "channel": "ORG_PORTAL"
}
}Response samples
- 201
- 400
- 401
- 403
- 409
- 413
- 422
- 429
- 500
{- "journeyRef": "ORG-4711-P-0032",
- "route": {
- "origin": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "ORG-4711-P-0032",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "string"
}
}
]
}, - "rideContact": {
- "name": {
- "display": "string"
}, - "phone": "string"
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "ORG-4711-P-0032",
- "channel": "ORG_PORTAL"
}, - "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "REQUESTED",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00",
- "assignment": {
- "operatorRef": "ORG-4711-P-0032",
- "operatorName": "string",
- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}
}Eigene Personentransporte cursorbasiert auflisten
Listet ausschliesslich Personentransporte der verifizierten Bestellerorganisation.
Authorizations:
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
| state | string (PersonTransportState) Enum: "REQUESTED" "DISPATCHING" "CONFIRMED" "ASSIGNED" "ENROUTE" "ARRIVED" "IN_PROGRESS" "COMPLETED" "CANCELLED" "NOT_SERVED" |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "items": [
- {
- "journeyRef": "ORG-4711-P-0032",
- "route": {
- "origin": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "ORG-4711-P-0032",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "string"
}
}
]
}, - "rideContact": {
- "name": {
- "display": "string"
}, - "phone": "string"
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "ORG-4711-P-0032",
- "channel": "ORG_PORTAL"
}, - "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "REQUESTED",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00",
- "assignment": {
- "operatorRef": "ORG-4711-P-0032",
- "operatorName": "string",
- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}
}
], - "nextCursor": "string"
}Eigenen Personentransport lesen
Fremde und nicht vorhandene IDs sind als 404 ununterscheidbar.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines allgemeinen Personentransports. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "journeyRef": "ORG-4711-P-0032",
- "route": {
- "origin": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "ORG-4711-P-0032",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "string"
}
}
]
}, - "rideContact": {
- "name": {
- "display": "string"
}, - "phone": "string"
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "ORG-4711-P-0032",
- "channel": "ORG_PORTAL"
}, - "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "REQUESTED",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00",
- "assignment": {
- "operatorRef": "ORG-4711-P-0032",
- "operatorName": "string",
- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}
}Eigenen Personentransport stornieren
Storniert den Personentransport idempotent nach der Zustandsregel; eine laufende Fahrt ist kein normales Storno.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines allgemeinen Personentransports. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| If-Match | string <= 128 characters ^"[^"]+"$ Optionale Precondition mit dem zuletzt gelesenen starken ETag. Weicht die aktuelle Ressourcenversion ab, folgt 412 PRECONDITION_FAILED ohne Wirkung. Ohne If-Match gilt Last-Write-Wins innerhalb der Idempotenzregeln. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| reason required | string Enum: "NO_LONGER_NEEDED" "ORDERER_ERROR" "TRAVELER_UNAVAILABLE" "OTHER" |
Responses
Request samples
- Payload
{- "reason": "NO_LONGER_NEEDED"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "journeyRef": "ORG-4711-P-0032",
- "route": {
- "origin": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "ORG-4711-P-0032",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "string"
}
}
]
}, - "rideContact": {
- "name": {
- "display": "string"
}, - "phone": "string"
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "ORG-4711-P-0032",
- "channel": "ORG_PORTAL"
}, - "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "REQUESTED",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00",
- "assignment": {
- "operatorRef": "ORG-4711-P-0032",
- "operatorName": "string",
- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}
}Unverbindliche PT-Verfuegbarkeitspruefung starten
Persistiert idempotent eine PII-minimierte Momentaufnahme und einen haltbaren Pruefauftrag. Namen, Kontakte, genaue Adressen, Zugangsinformationen und Rechnungsdetails sind verboten. Der Check reserviert keine Kapazitaet, erzeugt weder Personentransport noch Proposal und blockiert die spaetere Anlage bei Teilantwort oder Timeout nicht.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| journeyRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
required | object (PersonTransportRegion) PII-minimierte Region ohne Strasse, Hausnummer, Einrichtung oder Zugangshinweis. |
required | object (PersonTransportRegion) PII-minimierte Region ohne Strasse, Hausnummer, Einrichtung oder Zugangshinweis. |
required | object or object (PersonTransportTiming) |
required | object (PersonTransportServiceRequirement) |
| payerKind required | string Enum: "TRAVELER" "ORDERER_ORGANIZATION" "THIRD_PARTY" |
| settlementRoute required | string Enum: "PAY_ON_BOARD" "OPERATOR_INVOICE" |
Responses
Request samples
- Payload
{- "journeyRef": "PT-2026-0001",
- "pickupRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "dropoffRegion": {
- "country": "DE",
- "postcodePrefix": "481",
- "city": "Muenster"
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-08-15T12:00:00+02:00",
- "latest": "2026-08-15T12:15:00+02:00"
}
}, - "service": {
- "vehicleProfile": "TAXI_OR_HIRE_CAR",
- "capacity": {
- "occupantCount": 2,
- "seatedPlaces": 2,
- "wheelchairPlaces": 0,
- "childRestraintCount": 0,
- "baggageUnits": 1
}, - "assistanceNeeds": [ ],
- "childRestraints": [ ],
- "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": false
}, - "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD"
}Response samples
- 202
- 400
- 401
- 403
- 409
- 413
- 422
- 429
- 500
{- "availabilityCheckId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "PENDING",
- "assessment": "PENDING",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "softResultAt": "2026-07-13T07:50:00+02:00",
- "expiresAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00"
}Eigene PT-Verfuegbarkeitspruefung lesen
Nur dieselbe verifizierte Organisation und derselbe authentifizierte Client wie beim POST duerfen den Check lesen.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene, opake ID einer kurzlebigen PT-Vorabpruefung. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "availabilityCheckId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "PENDING",
- "assessment": "PENDING",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "softResultAt": "2026-07-13T07:50:00+02:00",
- "expiresAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00"
}Eigene PT-Proposals cursorbasiert auflisten
Polling-Fallback fuer dieselben PII-minimierten PT-Proposals wie im isolierten PT-Webhook.
Authorizations:
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
| state | string (PersonTransportProposalState) Enum: "OFFERED" "ACCEPTED" "REJECTED" "EXPIRED" "WITHDRAWN" |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "items": [
- {
- "proposalId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "journeyRef": "ORG-4711-P-0032",
- "state": "OFFERED",
- "pickupRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "dropoffRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "decisionBy": "2026-07-13T07:50:00+02:00",
- "correlationId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e"
}
], - "nextCursor": "string"
}Eigenes PII-minimiertes PT-Proposal lesen
Liefert weder Namen und Kontakte noch genaue Stopps, Zugangsinformationen oder Rechnungsdetails.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines PT-Proposals. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "proposalId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "journeyRef": "ORG-4711-P-0032",
- "state": "OFFERED",
- "pickupRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "dropoffRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "decisionBy": "2026-07-13T07:50:00+02:00",
- "correlationId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e"
}PT-Proposal atomar und verbindlich annehmen
Genau ein Betreiber gewinnt; ein identischer Idempotenz-Replay liefert immer die urspruengliche Antwort.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines PT-Proposals. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| assignmentMode required | any Value: "IMMEDIATE" |
| vehicleRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
| eta required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
Responses
Request samples
- Payload
{- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "proposalId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "proposalState": "ACCEPTED",
- "transportState": "ASSIGNED",
- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}PT-Proposal kodiert ablehnen
Lehnt ein offenes Proposal idempotent ab; PT-v1 bietet keine Zeit-Gegenvorschlaege und reserviert keine Kapazitaet.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines PT-Proposals. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| reason required | string Enum: "CAPACITY_UNAVAILABLE" "PAYMENT_NOT_ACCEPTED" "TIME_CONSTRAINT" "OUT_OF_SERVICE_AREA" "OTHER" |
Responses
Request samples
- Payload
{- "reason": "CAPACITY_UNAVAILABLE"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 413
- 422
- 429
- 500
{- "proposalId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "journeyRef": "ORG-4711-P-0032",
- "state": "OFFERED",
- "pickupRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "dropoffRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "decisionBy": "2026-07-13T07:50:00+02:00",
- "correlationId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e"
}Gewonnenen Personentransport mit Durchfuehrungsdaten lesen
Genaue Stopps, Hauptperson, Fahrtkontakt, Abrechnungsdaten und der beim Accept gepinnte Fahrzeuganforderungs-Snapshot sind erst nach atomarem Gewinn sichtbar.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines allgemeinen Personentransports. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 413
- 429
- 500
{- "journeyRef": "ORG-4711-P-0032",
- "route": {
- "origin": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "ORG-4711-P-0032",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "string"
}
}
]
}, - "rideContact": {
- "name": {
- "display": "string"
}, - "phone": "string"
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "ORG-4711-P-0032",
- "channel": "ORG_PORTAL"
}, - "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "REQUESTED",
- "assignmentBy": "2026-07-13T07:50:00+02:00",
- "vehicleRequirementSnapshot": {
- "revision": "cvp-vehicle-requirements-v3",
- "transportFamily": "PERSON_TRANSPORT",
- "requirement": {
- "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}
}, - "matchingPolicy": {
- "vehicleProfile": "EQ_OR_MEMBER_OF",
- "capacity": {
- "occupantCount": "GTE",
- "seatedPlaces": "GTE",
- "wheelchairPlaces": "GTE",
- "childRestraintCount": "GTE",
- "baggageUnits": "GTE"
}, - "assistanceNeeds": "CONTAINS_ALL",
- "childRestraintKinds": "CONTAINS_ALL",
- "storageItemKinds": "CONTAINS_ALL",
- "assistanceDog": "COVERS",
- "pet": "COVERS",
- "payment": "CONTAINS_ALL",
- "missingValue": "NOT_ELIGIBLE"
}, - "capability": {
- "capabilityRef": "ORG-4711-P-0032",
- "vehicleProfiles": [
- "TAXI"
], - "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraintKinds": [
- "INFANT_CARRIER"
], - "storageItemKinds": [
- "BAGGAGE"
], - "assistanceDog": true,
- "petAccepted": true,
- "payerKinds": [
- "TRAVELER"
], - "settlementRoutes": [
- "PAY_ON_BOARD"
], - "paymentMethods": [
- "CASH"
], - "invoiceAccepted": true
}, - "vehicle": {
- "vehicleRef": "ORG-4711-P-0032",
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraintKinds": [
- "INFANT_CARRIER"
], - "storageItemKinds": [
- "BAGGAGE"
], - "assistanceDog": true,
- "petAccepted": true
}, - "reservation": {
- "reservationRef": "ORG-4711-P-0032",
- "validFrom": "2026-07-13T07:50:00+02:00",
- "validUntil": "2026-07-13T07:50:00+02:00"
}
}, - "createdAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00"
}Gewonnenen Personentransport als Betreiber stornieren
Storniert den gewonnenen Personentransport idempotent und sichtbar ohne automatischen Re-Dispatch.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID eines allgemeinen Personentransports. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| reason required | string Enum: "VEHICLE_UNAVAILABLE" "STAFF_UNAVAILABLE" "OPERATIONAL_DISRUPTION" "OTHER" |
Responses
Request samples
- Payload
{- "reason": "VEHICLE_UNAVAILABLE"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 413
- 422
- 429
- 500
{- "journeyRef": "ORG-4711-P-0032",
- "route": {
- "origin": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}, - "destination": {
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postcode": "string",
- "city": "string",
- "country": "DE"
}, - "institution": "string",
- "station": "string",
- "access": {
- "meetingPointKind": "ADDRESS_ENTRANCE",
- "entranceAccess": "STEP_FREE",
- "contactOnArrival": true
}
}
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "travelParty": {
- "members": [
- {
- "memberRef": "ORG-4711-P-0032",
- "role": "PRIMARY_TRAVELER",
- "ageGroup": "ADULT",
- "seating": "VEHICLE_SEAT",
- "name": {
- "display": "string"
}
}
]
}, - "rideContact": {
- "name": {
- "display": "string"
}, - "phone": "string"
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payment": {
- "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "paymentMethod": "CASH"
}, - "medicalExclusion": {
- "prescriptionPresent": false,
- "medicalTransportRequired": false,
- "professionalCareRequired": false,
- "isolationRequired": false
}, - "orderer": {
- "facilityRef": "ORG-4711-P-0032",
- "channel": "ORG_PORTAL"
}, - "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "state": "REQUESTED",
- "createdAt": "2026-07-13T07:50:00+02:00",
- "updatedAt": "2026-07-13T07:50:00+02:00",
- "assignment": {
- "operatorRef": "ORG-4711-P-0032",
- "operatorName": "string",
- "assignmentMode": "IMMEDIATE",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}
}PT-Betreiberereignisse idempotent melden
Der Body ist immer ein Array mit 1 bis 100 Ereignissen; sourceEventId dedupliziert, die Plattform vergibt die kanonische Sequenz.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| sourceEventId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| personTransportId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| type required | any Value: "person_transport.assigned" |
| occurredAt required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
| correlationId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| vehicleRef required | string (ExternalRef) [ 1 .. 50 ] characters ^[A-Za-z0-9:._-]+$ |
| eta required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
Responses
Request samples
- Payload
[- {
- "sourceEventId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "type": "person_transport.assigned",
- "occurredAt": "2026-07-13T07:50:00+02:00",
- "correlationId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "vehicleRef": "ORG-4711-P-0032",
- "eta": "2026-07-13T07:50:00+02:00"
}
]Response samples
- 202
- 400
- 401
- 403
- 404
- 409
- 413
- 422
- 429
- 500
{- "receipts": [
- {
- "sourceEventId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "eventId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "sequence": 1,
- "acceptedAt": "2026-07-13T07:50:00+02:00"
}
]
}Signiertes PT-Ereignis empfangen Webhook
Isolierte Ereignisfamilie fuer allgemeine Personentransporte. Die Zustellung und Signaturpruefung entsprechen dem bestehenden CVP-Webhook; die Payload erweitert dessen geschlossene KF/QKT-Enums nicht.
Authorizations:
header Parameters
| X-Correlation-Id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Von der Plattform durchgereichte UUIDv4. |
| X-CVP-Signature required | string <= 300 characters ^kid=whk_[A-Za-z0-9_-]{43}, t=[0-9]{10,}, n=[... Example: kid=whk_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, t=1783872000, n=550e8400-e29b-41d4-a716-446655440000, v1=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= Signatur mit versionierter Secret-Selektion; |
Request Body schema: application/jsonrequired
| eventId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| type required | string (PersonTransportWebhookEventType) Enum: "person_transport.proposal_offered" "person_transport.proposal_withdrawn" "person_transport.confirmed" "person_transport.cancelled" "person_transport.status_changed" |
| occurredAt required | string <date-time> (DateTimeWithOffset) (?:Z|[+-][0-9]{2}:[0-9]{2})$ |
| personTransportId required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... |
| sequence required | integer >= 1 |
required | PersonTransportProposal (object) or object |
Responses
Request samples
- Payload
{- "eventId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "type": "person_transport.proposal_offered",
- "occurredAt": "2026-07-13T07:50:00+02:00",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "sequence": 1,
- "data": {
- "proposalId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "personTransportId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "journeyRef": "ORG-4711-P-0032",
- "state": "OFFERED",
- "pickupRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "dropoffRegion": {
- "country": "string",
- "postcodePrefix": "string",
- "city": "string"
}, - "timing": {
- "pickupWindow": {
- "earliest": "2026-07-13T07:50:00+02:00",
- "latest": "2026-07-13T07:50:00+02:00"
}
}, - "service": {
- "vehicleProfile": "TAXI",
- "capacity": {
- "occupantCount": 1,
- "seatedPlaces": 8,
- "wheelchairPlaces": 8,
- "childRestraintCount": 8,
- "baggageUnits": 20
}, - "assistanceNeeds": [
- "BOARDING_ASSISTANCE"
], - "childRestraints": [
- {
- "kind": "INFANT_CARRIER",
- "count": 1
}
], - "storageItems": [
- {
- "kind": "BAGGAGE",
- "count": 1
}
], - "assistanceDog": true,
- "pet": {
- "species": "DOG",
- "size": "SMALL",
- "transportBox": true
}
}, - "payerKind": "TRAVELER",
- "settlementRoute": "PAY_ON_BOARD",
- "decisionBy": "2026-07-13T07:50:00+02:00",
- "correlationId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e"
}
}Eigene PT-Webhook-Subscription anlegen
Das validierte Ziel empfaengt ausschliesslich Ereignisse der isolierten PT-Familie; das Secret wird genau einmal ausgegeben.
Authorizations:
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Request Body schema: application/jsonrequired
| targetUrl required | string <uri> <= 2048 characters ^https:// |
| events required | Array of strings (PersonTransportWebhookEventType) non-empty unique Items Enum: "person_transport.proposal_offered" "person_transport.proposal_withdrawn" "person_transport.confirmed" "person_transport.cancelled" "person_transport.status_changed" |
Responses
Request samples
- Payload
{- "events": [
- "person_transport.proposal_offered"
]
}Response samples
- 201
- 400
- 401
- 403
- 409
- 413
- 422
- 429
- 500
{- "webhookId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "events": [
- "person_transport.proposal_offered"
], - "createdAt": "2026-07-13T07:50:00+02:00",
- "secret": "stringstringstringstringstringst",
- "secretKid": "string"
}Eigene PT-Webhook-Subscriptions auflisten
Secrets werden nie erneut ausgegeben; die Liste ist organisationsbegrenzt und limitiert.
Authorizations:
query Parameters
| cursor | string [ 1 .. 1024 ] characters Opaker, kurzlebiger Cursor; Clients duerfen Inhalt oder Sortierschluessel nicht interpretieren. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximale Elementzahl; Listen ohne wirksames Limit sind unzulaessig. |
header Parameters
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 413
- 429
- 500
{- "items": [
- {
- "webhookId": "2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e",
- "events": [
- "person_transport.proposal_offered"
], - "createdAt": "2026-07-13T07:50:00+02:00"
}
], - "nextCursor": "string"
}Eigene PT-Webhook-Subscription loeschen
Loescht eine eigene Subscription idempotent; fremde IDs erscheinen als NOT_FOUND.
Authorizations:
path Parameters
| id required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e Plattformvergebene ID einer isolierten PT-Webhook-Subscription. |
header Parameters
| Idempotency-Key required | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4. Der Schluesselraum besteht aus Organisation, Client, Methode, Pfadtemplate und Key. Gleicher effektiver Command liefert die urspruengliche Antwort; abweichender Command liefert 409 CONFLICT_IDEMPOTENCY. |
| X-Correlation-Id | string <uuid> (UuidV4) ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3... Examples: 2e0fcfa3-54d8-4c47-8526-b5b8b3dcc75e UUIDv4; fehlt sie, erzeugt die Plattform eine und gibt sie in jeder Antwort zurueck. |
Responses
Response samples
- 400
- 401
- 403
- 404
- 409
- 413
- 429
- 500
{- "code": "VALIDATION_ERROR",
- "message": "pickupWindow.latest liegt vor pickupWindow.earliest",
- "field": "pickupWindow.latest",
- "correlationId": "ed0dc0ac-f5d5-4f97-9f55-6d2e8d675ef0",
- "retriable": false
}