changedOutput schema / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "status": {
- "enum": [
- "invalid_request",
- "not_found",
- "unavailable",
- "ambiguous",
- "conflict",
- "expired"
- ],
- "type": "string"
- }
- },
- "required": [
- "status"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "bookingChanged": {
- "const": false,
- "type": "boolean"
- },
- "nextAction": {
- "type": "string"
- },
- "payment": {
- "additionalProperties": false,
- "properties": {
- "recordedStatus": {
- "type": "string"
- }
- },
- "required": [
- "recordedStatus"
- ],
- "type": "object"
- },
- "status": {
- "const": "available",
- "type": "string"
- }
- },
- "required": [
- "status",
- "payment",
- "bookingChanged",
- "nextAction"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "bookingConfirmed": {
- "const": false,
- "type": "boolean"
- },
- "checkoutUrl": {
- "format": "uri",
- "type": "string"
- },
- "nextAction": {
- "type": "string"
- },
- "offer": {
- "additionalProperties": false,
- "properties": {
- "completeTermsBound": {
- "const": true,
- "type": "boolean"
- },
- "currency": {
- "const": "EUR",
- "type": "string"
- },
- "customerConfirmationRequired": {
- "const": true,
- "type": "boolean"
- },
- "expiresAt": {
- "type": "string"
- },
- "grossTotalCents": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "currency",
- "grossTotalCents",
- "expiresAt",
- "customerConfirmationRequired",
- "completeTermsBound"
- ],
- "type": "object"
- },
- "status": {
- "const": "prepared",
- "type": "string"
- },
- "termsUrl": {
- "format": "uri",
- "type": "string"
- }
- },
- "required": [
- "status",
- "bookingConfirmed",
- "checkoutUrl",
- "termsUrl",
- "offer",
- "nextAction"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "status": {
+ "description": "Review failure: invalid_request rejects input; not_found denies current object/proof access; unavailable cannot safely supply the review; ambiguous means evidence is incomplete or non-unique; conflict means stored offer facts disagree; expired means the bound offer has expired.",
+ "enum": [
+ "invalid_request",
+ "not_found",
+ "unavailable",
+ "ambiguous",
+ "conflict",
+ "expired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "bookingChanged": {
+ "const": false,
+ "description": "This read did not change the booking.",
+ "type": "boolean"
+ },
+ "nextAction": {
+ "description": "Read-only guidance for the returned recorded state; do not start another payment.",
+ "type": "string"
+ },
+ "payment": {
+ "additionalProperties": false,
+ "description": "The selected booking's recorded payment state.",
+ "properties": {
+ "recordedStatus": {
+ "description": "Stored reservation payment status; no new payment-provider confirmation.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "recordedStatus"
+ ],
+ "type": "object"
+ },
+ "status": {
+ "const": "available",
+ "description": "Recorded payment state is returned without another payment link for an already-paid, refunded or closed booking.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "status",
+ "payment",
+ "bookingChanged",
+ "nextAction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "bookingConfirmed": {
+ "const": false,
+ "description": "Returning the existing review link does not confirm the booking.",
+ "type": "boolean"
+ },
+ "checkoutUrl": {
+ "description": "Existing private offer-review page; open it to review terms and explicitly confirm and pay through the existing flow. Treat the link as private.",
+ "format": "uri",
+ "type": "string"
+ },
+ "nextAction": {
+ "description": "Guidance to open the existing review page and review the bound offer; this read performs no payment.",
+ "type": "string"
+ },
+ "offer": {
+ "additionalProperties": false,
+ "description": "Existing offer amount, expiry and confirmation/terms requirements.",
+ "properties": {
+ "completeTermsBound": {
+ "const": true,
+ "description": "Complete service and legal terms were verified as bound to this offer.",
+ "type": "boolean"
+ },
+ "currency": {
+ "const": "EUR",
+ "description": "Currency of the existing bound offer amount: EUR.",
+ "type": "string"
+ },
+ "customerConfirmationRequired": {
+ "const": true,
+ "description": "The customer must explicitly review and confirm the offer on its existing page.",
+ "type": "boolean"
+ },
+ "expiresAt": {
+ "description": "Stored offer expiry timestamp from offer_expires_at. It is separate from the submission resume-token expiry; an expired offer cannot be confirmed.",
+ "type": "string"
+ },
+ "grossTotalCents": {
+ "description": "Verified gross total of the existing offer in EUR cents, including applicable tax.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "currency",
+ "grossTotalCents",
+ "expiresAt",
+ "customerConfirmationRequired",
+ "completeTermsBound"
+ ],
+ "type": "object"
+ },
+ "status": {
+ "const": "prepared",
+ "description": "The existing unpaid offer and bound review link were verified for review; no new Checkout Session or payment was created.",
+ "type": "string"
+ },
+ "termsUrl": {
+ "description": "The same existing offer page containing the complete bound terms to review before confirmation.",
+ "format": "uri",
+ "type": "string"
+ }
+ },
+ "required": [
+ "status",
+ "bookingConfirmed",
+ "checkoutUrl",
+ "termsUrl",
+ "offer",
+ "nextAction"
+ ],
+ "type": "object"
+ }
+]