changedOutput schema / properties / items / items / anyOf
Previous value: -[
- {
- "additionalProperties": {},
- "properties": {
- "hotel": {
- "additionalProperties": {},
- "properties": {
- "cancellation": {
- "additionalProperties": {},
- "properties": {
- "asOf": {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
- "type": "string"
- },
- "freeCancellationEndsAt": {
- "anyOf": [
- {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "penalties": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "amount": {
- "additionalProperties": {},
- "properties": {
- "amount": {
- "pattern": "^\\d+(\\.\\d+)?$",
- "type": "string"
- },
- "currency": {
- "pattern": "^[A-Z]{3}$",
- "type": "string"
- }
- },
- "required": [
- "amount",
- "currency"
- ],
- "type": "object"
- },
- "startsAt": {
- "anyOf": [
- {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "startsAt",
- "amount"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "status": {
- "anyOf": [
- {
- "enum": [
- "free",
- "partial_penalty",
- "non_refundable",
- "unknown"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- "timeZone": {
- "type": [
- "string",
- "null"
- ]
- }
- },
- "required": [
- "status",
- "asOf",
- "freeCancellationEndsAt",
- "penalties",
- "timeZone"
- ],
- "type": "object"
- },
- "checkIn": {
- "type": "string"
- },
- "checkOut": {
- "type": "string"
- },
- "confirmationNumber": {
- "type": [
- "string",
- "null"
- ]
- },
- "hotelId": {
- "anyOf": [
- {
- "pattern": "^htl_[0-9A-Za-z]{20}$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "meals": {
- "additionalProperties": {},
- "properties": {
- "allInclusive": {
- "type": [
- "boolean",
- "null"
- ]
- },
- "guestsCoveredPerRoom": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "included": {
- "anyOf": [
- {
- "items": {
- "anyOf": [
- {
- "enum": [
- "breakfast",
- "lunch",
- "dinner"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "known": {
- "type": "boolean"
- },
- "label": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "locale": {
- "anyOf": [
- {
- "anyOf": [
- {
- "enum": [
- "en",
- "zh"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ]
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "text",
- "locale"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "unspecifiedMainMeals": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "known",
- "included",
- "unspecifiedMainMeals",
- "allInclusive",
- "guestsCoveredPerRoom",
- "label"
- ],
- "type": "object"
- },
- "name": {
- "type": "string"
- },
- "names": {
- "additionalProperties": {},
- "properties": {
- "en": {
- "type": [
- "string",
- "null"
- ]
- },
- "zh": {
- "type": [
- "string",
- "null"
- ]
- }
- },
- "required": [
- "en",
- "zh"
- ],
- "type": "object"
- },
- "payAtProperty": {
- "additionalProperties": {},
- "properties": {
- "disclosure": {
- "anyOf": [
- {
- "enum": [
- "complete",
- "incomplete"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- "items": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "amount": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "amount": {
- "pattern": "^\\d+(\\.\\d+)?$",
- "type": "string"
- },
- "currency": {
- "pattern": "^[A-Z]{3}$",
- "type": "string"
- }
- },
- "required": [
- "amount",
- "currency"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "basis": {
- "anyOf": [
- {
- "enum": [
- "per_stay",
- "per_night",
- "per_person",
- "per_person_per_night",
- "unknown"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- "collectedAt": {
- "anyOf": [
- {
- "enum": [
- "property",
- "unknown"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- "label": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "locale": {
- "anyOf": [
- {
- "anyOf": [
- {
- "enum": [
- "en",
- "zh"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ]
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "text",
- "locale"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "mandatory": {
- "type": "boolean"
- }
- },
- "required": [
- "label",
- "amount",
- "mandatory",
- "basis",
- "collectedAt"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "disclosure",
- "items"
- ],
- "type": "object"
- },
- "room": {
- "additionalProperties": {},
- "properties": {
- "beds": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "locale": {
- "anyOf": [
- {
- "anyOf": [
- {
- "enum": [
- "en",
- "zh"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ]
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "text",
- "locale"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "name": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "locale": {
- "anyOf": [
- {
- "anyOf": [
- {
- "enum": [
- "en",
- "zh"
- ],
- "type": "string"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ]
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "text",
- "locale"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "beds"
- ],
- "type": "object"
- },
- "rooms": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "adults": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "childrenAges": {
- "items": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "type": "array"
- }
- },
- "required": [
- "adults",
- "childrenAges"
- ],
- "type": "object"
- },
- "minItems": 1,
- "type": "array"
- },
- "timeZone": {
- "type": [
- "string",
- "null"
- ]
- }
- },
- "required": [
- "hotelId",
- "name",
- "names",
- "checkIn",
- "checkOut",
- "timeZone",
- "rooms",
- "room",
- "meals",
- "cancellation",
- "payAtProperty",
- "confirmationNumber"
- ],
- "type": "object"
- },
- "type": {
- "const": "hotel",
- "type": "string"
- }
- },
- "required": [
- "type",
- "hotel"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "type": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": {},
+ "properties": {
+ "hotel": {
+ "additionalProperties": {},
+ "properties": {
+ "cancellation": {
+ "additionalProperties": {},
+ "description": "The terms the order was made on, read at asOf; cancel says whether it can be cancelled now.",
+ "properties": {
+ "asOf": {
+ "description": "When these terms were read: status and penalties are as of this time.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
+ "type": "string"
+ },
+ "freeCancellationEndsAt": {
+ "anyOf": [
+ {
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "penalties": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "pattern": "^\\d+(\\.\\d+)?$",
+ "type": "string"
+ },
+ "currency": {
+ "pattern": "^[A-Z]{3}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "amount",
+ "currency"
+ ],
+ "type": "object"
+ },
+ "startsAt": {
+ "anyOf": [
+ {
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "startsAt",
+ "amount"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "status": {
+ "anyOf": [
+ {
+ "enum": [
+ "free",
+ "partial_penalty",
+ "non_refundable",
+ "unknown"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "timeZone": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "status",
+ "asOf",
+ "freeCancellationEndsAt",
+ "penalties",
+ "timeZone"
+ ],
+ "type": "object"
+ },
+ "checkIn": {
+ "type": "string"
+ },
+ "checkOut": {
+ "type": "string"
+ },
+ "confirmationNumber": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "hotelId": {
+ "anyOf": [
+ {
+ "pattern": "^htl_[0-9A-Za-z]{20}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "meals": {
+ "additionalProperties": {},
+ "description": "What the rate includes to eat. known false: the meals are unknown, not none, and included, unspecifiedMainMeals and allInclusive are null.",
+ "properties": {
+ "allInclusive": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "guestsCoveredPerRoom": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How many guests in each room the meals are for; fewer than the guests in the room means not everyone gets them. null when not stated."
+ },
+ "included": {
+ "anyOf": [
+ {
+ "items": {
+ "anyOf": [
+ {
+ "enum": [
+ "breakfast",
+ "lunch",
+ "dinner"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "known": {
+ "type": "boolean"
+ },
+ "label": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "locale": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "enum": [
+ "en",
+ "zh"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "locale"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "unspecifiedMainMeals": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Main meals a day beyond included that the rate doesn't name (e.g. 1 when a half-board rate doesn't say lunch or dinner); null when known is false."
+ }
+ },
+ "required": [
+ "known",
+ "included",
+ "unspecifiedMainMeals",
+ "allInclusive",
+ "guestsCoveredPerRoom",
+ "label"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "type": "string"
+ },
+ "names": {
+ "additionalProperties": {},
+ "properties": {
+ "en": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "zh": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "en",
+ "zh"
+ ],
+ "type": "object"
+ },
+ "payAtProperty": {
+ "additionalProperties": {},
+ "description": "Fees paid at the property, on top of price.total, in the property's currency, not converted. disclosure incomplete: there may be fees not listed.",
+ "properties": {
+ "disclosure": {
+ "anyOf": [
+ {
+ "enum": [
+ "complete",
+ "incomplete"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "items": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "pattern": "^\\d+(\\.\\d+)?$",
+ "type": "string"
+ },
+ "currency": {
+ "pattern": "^[A-Z]{3}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "amount",
+ "currency"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "basis": {
+ "anyOf": [
+ {
+ "enum": [
+ "per_stay",
+ "per_night",
+ "per_person",
+ "per_person_per_night",
+ "unknown"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "collectedAt": {
+ "anyOf": [
+ {
+ "enum": [
+ "property",
+ "unknown"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "label": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "locale": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "enum": [
+ "en",
+ "zh"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "locale"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mandatory": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "label",
+ "amount",
+ "mandatory",
+ "basis",
+ "collectedAt"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "disclosure",
+ "items"
+ ],
+ "type": "object"
+ },
+ "room": {
+ "additionalProperties": {},
+ "properties": {
+ "beds": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "locale": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "enum": [
+ "en",
+ "zh"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "locale"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "name": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "locale": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "enum": [
+ "en",
+ "zh"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "locale"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "beds"
+ ],
+ "type": "object"
+ },
+ "rooms": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "adults": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "childrenAges": {
+ "items": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "adults",
+ "childrenAges"
+ ],
+ "type": "object"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "timeZone": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "hotelId",
+ "name",
+ "names",
+ "checkIn",
+ "checkOut",
+ "timeZone",
+ "rooms",
+ "room",
+ "meals",
+ "cancellation",
+ "payAtProperty",
+ "confirmationNumber"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "const": "hotel",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "hotel"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": {},
+ "properties": {
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": "object"
+ }
+]
addedOutput schema / properties / payment / properties / methods
Added value: +{
+ "description": "What pay_order accepts for this order now, by id. [] means: give the user payment.url, when it isn't null.",
+ "items": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "description": "A Stripe shared payment token, through pay_order's sharedPaymentToken or payment. The entry is absent when a token can't pay the order: over $500, not charged in USD, an order started on the Fortrip website, a negotiated price, under 15 minutes left, 5 tokens tried, a token payment is under way, an Alipay or WeChat Pay payment is open, or token payment isn't offered for this order.",
+ "properties": {
+ "handler": {
+ "additionalProperties": {},
+ "description": "The com.stripe.payments handler, which takes the token.",
+ "properties": {
+ "available_instruments": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "config": {
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "config": {
+ "additionalProperties": {},
+ "properties": {
+ "business_profile": {
+ "type": "string"
+ },
+ "environment": {
+ "anyOf": [
+ {
+ "enum": [
+ "livemode",
+ "testmode"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "environment",
+ "business_profile"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "type": "string"
+ },
+ "schema": {
+ "type": "string"
+ },
+ "spec": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "type",
+ "version",
+ "spec",
+ "schema",
+ "available_instruments",
+ "config"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "const": "stripe_shared_payment_token",
+ "type": "string"
+ },
+ "limits": {
+ "additionalProperties": {},
+ "description": "What the shared payment token for pay_order must allow.",
+ "properties": {
+ "currency": {
+ "description": "The token's currency, lowercase as Stripe takes it: usd.",
+ "type": "string"
+ },
+ "expiresAt": {
+ "description": "Request the token valid until at least this time; the order can't be paid after it.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?Z$",
+ "type": "string"
+ },
+ "maxAmount": {
+ "description": "Request the token for at least this amount, in cents; a token that allows less can't pay.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "maxAmount",
+ "currency",
+ "expiresAt"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "handler",
+ "limits"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": {},
+ "description": "Paying with Alipay or WeChat Pay: pass method stripe_alipay_wechat_pay to pay_order to open it. The entry is absent when the order can't be paid this way and none is open, as on a CNY order.",
+ "properties": {
+ "alipay": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "url": {
+ "description": "A link, on fortrip.ai, for the user to pay with Alipay; anyone holding it can pay.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "url"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The Alipay link; null until the payment is open."
+ },
+ "current": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "enum": [
+ "wechat_pay",
+ "alipay"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which of the two the payment is on now; null until it is open."
+ },
+ "id": {
+ "const": "stripe_alipay_wechat_pay",
+ "type": "string"
+ },
+ "open": {
+ "description": "Whether pay_order has opened an Alipay or WeChat Pay payment on this order.",
+ "type": "boolean"
+ },
+ "wechatPay": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "qrData": {
+ "description": "The WeChat Pay code's content, to draw as a QR code; null when there is no live code (open wechatPay.url for one).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "qrImageUrl": {
+ "description": "A 480 px PNG of the same code.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "url": {
+ "description": "A link, on fortrip.ai, for the user to pay with WeChat Pay; anyone holding it can pay.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "qrData",
+ "qrImageUrl",
+ "url"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The WeChat Pay code and link; null until the payment is open."
+ }
+ },
+ "required": [
+ "id",
+ "open",
+ "current",
+ "wechatPay",
+ "alipay"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": {},
+ "properties": {
+ "id": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "type": "array"
+}