addedInput schema / properties / changes
Added value: +{
+ "additionalProperties": false,
+ "description": "Only the fields the customer explicitly wants to change. Omitted fields are loaded from the current booking after sign-in; null clears an optional field. Use either changes or a complete amendment, never both. The merged proposal must satisfy all ride rules and is reviewed with current pricing and separate consent before any booking action.",
+ "properties": {
+ "locale": {
+ "enum": [
+ "de",
+ "en"
+ ],
+ "type": "string"
+ },
+ "offerKey": {
+ "anyOf": [
+ {
+ "description": "Optional published supplier offer key, for example service_airport. Pass only a key supplied by the provider’s published context; otherwise omit to use the configured default. Preserve it across related calls and retries. It selects a service location and terms, not a booking ID or access grant.",
+ "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "ride": {
+ "additionalProperties": false,
+ "properties": {
+ "date": {
+ "description": "Service date as YYYY-MM-DD, for example 2026-12-24, in the selected location’s time zone; do not convert it to a UTC date.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "destination": {
+ "description": "Destination with city or postcode, distinct from pickup.",
+ "maxLength": 240,
+ "minLength": 2,
+ "type": "string"
+ },
+ "flightNumber": {
+ "anyOf": [
+ {
+ "description": "Flight number for an airport pickup, if known.",
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "hours": {
+ "anyOf": [
+ {
+ "description": "Whole service hours from 1 to 24, for example 3. Required only for serviceType=hourly; omit for transfers. Billable hours may differ after price calculation.",
+ "maximum": 24,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "luggage": {
+ "anyOf": [
+ {
+ "description": "Luggage notes. Unusual items may need review.",
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "passengers": {
+ "description": "Number of people travelling, from 1 to 60.",
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "pickup": {
+ "description": "Pickup place with city or postcode, inside a served area.",
+ "maxLength": 240,
+ "minLength": 2,
+ "type": "string"
+ },
+ "returnDate": {
+ "anyOf": [
+ {
+ "description": "Return date YYYY-MM-DD, only for a return trip.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "returnTime": {
+ "anyOf": [
+ {
+ "description": "Return time HH:mm, only for a return trip.",
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "serviceType": {
+ "anyOf": [
+ {
+ "description": "Set hourly for duration service; omit for transfers.",
+ "enum": [
+ "hourly"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "time": {
+ "description": "Local pickup time in 24-hour HH:mm format, for example 14:30, in the selected location’s time zone.",
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
+ "type": "string"
+ },
+ "tripType": {
+ "description": "one_way, or return with a later pickup.",
+ "enum": [
+ "one_way",
+ "return"
+ ],
+ "type": "string"
+ },
+ "vehiclePreference": {
+ "anyOf": [
+ {
+ "description": "Optional vehicle wish, without a price guarantee.",
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "specialRequests": {
+ "anyOf": [
+ {
+ "description": "Optional requirements, at most 500 characters.",
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+}
changedOutput schema / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "consentUrl": {
- "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and proposed facts. Current authority is rechecked, then the existing flow requires separate visible action consent and confirmation; the link itself grants no authority.",
- "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=",
- "type": "string"
- },
- "status": {
- "const": "consent_required",
- "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.",
- "type": "string"
- }
- },
- "required": [
- "status",
- "consentUrl"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "status": {
- "description": "invalid_request rejects malformed selection/action facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.",
- "enum": [
- "invalid_request",
- "not_found",
- "unavailable"
- ],
- "type": "string"
- }
- },
- "required": [
- "status"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "consentUrl": {
+ "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and either a complete proposal or explicitly requested changes. Current authority is rechecked and unchanged facts are loaded privately. The existing flow then requires a complete proposal, current price and terms, separate visible action consent and confirmation; the link grants no execution authority.",
+ "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=",
+ "type": "string"
+ },
+ "status": {
+ "const": "consent_required",
+ "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "status",
+ "consentUrl"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "status": {
+ "description": "invalid_request rejects malformed selection or change facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.",
+ "enum": [
+ "invalid_request",
+ "not_found",
+ "unavailable"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "status"
+ ],
+ "type": "object"
+ }
+]