Files
LWLT-AIBOT/schemas/agent_operation.schema.json
2026-09-14 16:34:36 +08:00

1163 lines
36 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://local.lwltapi/schemas/agent_operation.schema.json",
"title": "LTJT Agent Parsed Operation",
"description": "User-intent operation emitted by the Agent. It contains only user-visible business facts and normalized values; execution references and runtime evidence belong to the downstream execution contract. Update actions preserve every recognized user-stated business field, even when the plugin will later require manual review.",
"type": "object",
"additionalProperties": false,
"required": ["action", "order_nature", "submit_mode", "data"],
"properties": {
"action": {
"enum": [
"team_order_create",
"team_order_batch_create",
"shared_plan_create",
"shared_child_order_create",
"passenger_list_import",
"arrangement_guide",
"arrangement_vehicle",
"arrangement_hotel",
"arrangement_transport",
"arrangement_other",
"order_update_independent",
"order_update_shared_plan",
"order_update_shared_child",
"order_cancel",
"order_restore",
"confirmation_export"
]
},
"order_nature": { "const": "formal" },
"submit_mode": { "const": "dry_run" },
"data": { "$ref": "#/$defs/data" }
},
"allOf": [
{
"if": { "properties": { "data": { "properties": { "arrangement": { "required": ["vehicle_type"] } }, "required": ["arrangement"] } }, "required": ["data"] },
"then": { "properties": { "action": { "const": "arrangement_vehicle" }, "data": { "properties": { "arrangement": { "properties": { "mode": { "enum": ["create", "update"] } } } } } } }
},
{
"if": { "properties": { "data": { "properties": { "arrangement": { "required": ["ticket_description"] } }, "required": ["arrangement"] } }, "required": ["data"] },
"then": { "properties": { "action": { "const": "arrangement_transport" }, "data": { "properties": { "arrangement": { "properties": { "mode": { "enum": ["create", "update"] } } } } } } }
},
{
"if": { "properties": { "action": { "const": "team_order_create" } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"required": ["customer", "product", "departure_dates", "passenger_counts", "room_counts"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
}
}
},
{
"if": { "properties": { "action": { "const": "team_order_batch_create" } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"required": ["customer", "product", "departure_dates", "recurrence", "passenger_counts", "room_counts"],
"properties": { "departure_dates": { "minItems": 2 } }
}
}
}
},
{
"if": { "properties": { "action": { "const": "shared_plan_create" } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"required": ["product", "planned_capacity", "room_counts"],
"anyOf": [
{ "required": ["departure_dates"], "properties": { "departure_dates": { "minItems": 1 } } },
{ "required": ["recurrence"] }
]
}
}
}
},
{
"if": { "properties": { "action": { "const": "shared_child_order_create" } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"required": ["customer", "passenger_counts"],
"anyOf": [
{
"required": ["existing_refs"],
"properties": { "existing_refs": { "required": ["identifier"] } }
},
{
"required": ["departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
],
"properties": {
"existing_refs": {
"required": ["kind"],
"properties": { "kind": { "const": "shared_plan" } }
},
"departure_dates": { "maxItems": 1 }
}
}
}
}
},
{
"if": { "properties": { "action": { "const": "passenger_list_import" } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"required": ["existing_refs", "passenger_list"],
"anyOf": [
{ "properties": { "existing_refs": { "required": ["identifier"] } } },
{
"required": ["customer", "departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
],
"properties": {
"existing_refs": {
"required": ["kind"],
"properties": { "kind": { "enum": ["independent_order", "shared_child_order"] } }
}
}
}
}
}
},
{
"if": { "properties": {
"action": {
"const": "arrangement_guide"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "create"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
}, "required": ["action",
"data"] },
"then": {
"properties": {
"data": {
"required": ["existing_refs", "arrangement"],
"properties": {
"existing_refs": { "required": ["identifier"] },
"arrangement": {
"required": ["mode", "resource"],
"properties": { "mode": { "const": "create" } }
}
}
}
}
}
},
{
"if": { "properties": {
"action": {
"const": "arrangement_vehicle"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "create"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
}, "required": ["action",
"data"] },
"then": {
"properties": {
"data": {
"required": ["existing_refs", "arrangement"],
"properties": {
"existing_refs": { "required": ["identifier"] },
"arrangement": {
"required": ["mode", "supplier", "start_date", "end_date", "quantity"],
"properties": { "mode": { "const": "create" } },
"not": { "anyOf": [{ "required": ["item"] }, { "required": ["date"] }] }
}
}
}
}
}
},
{
"if": { "properties": {
"action": {
"const": "arrangement_transport"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "create"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
}, "required": ["action",
"data"] },
"then": {
"properties": {
"data": {
"required": ["existing_refs", "arrangement"],
"properties": {
"existing_refs": { "required": ["identifier"] },
"arrangement": {
"required": ["mode", "supplier", "quantity"],
"properties": { "mode": { "const": "create" } }
}
}
}
}
}
},
{
"if": { "properties": {
"action": {
"const": "arrangement_other"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "create"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
}, "required": ["action",
"data"] },
"then": {
"properties": {
"data": {
"required": ["existing_refs", "arrangement"],
"properties": {
"existing_refs": { "required": ["identifier"] },
"arrangement": {
"required": ["mode", "supplier", "date"],
"properties": { "mode": { "const": "create" } }
}
}
}
}
}
},
{
"if": {
"properties": {
"action": { "const": "arrangement_hotel" },
"data": { "properties": { "arrangement": { "properties": { "mode": { "const": "create" } }, "required": ["mode"] } }, "required": ["arrangement"] }
},
"required": ["action", "data"]
},
"then": {
"properties": {
"data": {
"required": ["existing_refs", "arrangement"],
"properties": {
"existing_refs": { "required": ["identifier"] },
"arrangement": { "required": ["resource", "start_date", "end_date", "room_count"] }
}
}
}
}
},
{
"if": {
"properties": {
"action": { "const": "arrangement_hotel" },
"data": { "properties": { "arrangement": { "properties": { "mode": { "const": "update" } }, "required": ["mode"] } }, "required": ["arrangement"] }
},
"required": ["action", "data"]
},
"then": {
"properties": {
"data": {
"required": ["existing_refs", "arrangement"],
"properties": {
"existing_refs": { "required": ["identifier"] },
"arrangement": { "required": ["changes"] }
}
}
}
}
},
{
"if": { "properties": { "action": { "const": "order_update_independent" } }, "required": ["action"] },
"then": { "$ref": "#/$defs/independentUpdate" }
},
{
"if": { "properties": { "action": { "const": "order_update_shared_plan" } }, "required": ["action"] },
"then": { "$ref": "#/$defs/sharedPlanUpdate" }
},
{
"if": { "properties": { "action": { "const": "order_update_shared_child" } }, "required": ["action"] },
"then": { "$ref": "#/$defs/sharedChildUpdate" }
},
{
"if": { "properties": { "action": { "enum": ["order_cancel", "order_restore"] } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"anyOf": [
{
"required": ["existing_refs"],
"properties": { "existing_refs": { "required": ["identifier"] } }
},
{
"required": ["customer", "departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
]
}
}
}
},
{
"if": { "properties": { "action": { "const": "confirmation_export" } }, "required": ["action"] },
"then": {
"properties": {
"data": {
"anyOf": [
{
"required": ["existing_refs"],
"properties": { "existing_refs": { "required": ["identifier"] } }
},
{
"required": ["customer", "departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
],
"oneOf": [
{ "required": ["confirmation"], "not": { "required": ["export_types"] } },
{ "required": ["export_types"], "not": { "required": ["confirmation"] } }
]
}
}
}
},
{
"if": {
"properties": {
"action": { "const": "confirmation_export" },
"data": {
"properties": {
"existing_refs": {
"properties": { "kind": { "const": "shared_plan" } },
"required": ["kind"]
}
},
"required": ["existing_refs"]
}
},
"required": ["action", "data"]
},
"then": {
"properties": {
"data": {
"required": ["confirmation"],
"not": { "required": ["export_types"] },
"properties": {
"confirmation": {
"required": ["type"],
"properties": { "type": { "const": "visitor-list" } }
}
}
}
}
}
},
{
"if": {
"properties": {
"action": {
"const": "arrangement_guide"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "update"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
},
"required": [
"action",
"data"
]
},
"then": {
"properties": {
"data": {
"required": [
"existing_refs",
"arrangement"
],
"properties": {
"existing_refs": {
"required": [
"identifier"
]
},
"arrangement": {
"type": "object",
"additionalProperties": false,
"required": [
"mode",
"changes"
],
"properties": {
"mode": {
"const": "update"
},
"changes": {
"type": "object",
"additionalProperties": false,
"required": [
"resource"
],
"properties": {
"resource": {
"$ref": "#/$defs/namedRef"
},
"remark": {
"type": "string",
"minLength": 1
}
}
}
}
}
}
}
}
}
},
{
"if": {
"properties": {
"action": {
"const": "arrangement_vehicle"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "update"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
},
"required": [
"action",
"data"
]
},
"then": {
"properties": {
"data": {
"required": [
"existing_refs",
"arrangement"
],
"properties": {
"existing_refs": {
"required": [
"identifier"
]
},
"arrangement": {
"type": "object",
"additionalProperties": false,
"required": [
"mode",
"changes",
"selection"
],
"properties": {
"mode": {
"const": "update"
},
"vehicle_type": { "type": "string", "minLength": 1, "pattern": "\\S" },
"changes": {
"type": "object",
"additionalProperties": false,
"required": [
"supplier",
"quantity"
],
"properties": {
"supplier": {
"$ref": "#/$defs/namedRef"
},
"remark": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "integer",
"minimum": 1
}
}
},
"selection": {
"type": "object",
"additionalProperties": false,
"required": [
"start_date",
"end_date"
],
"properties": {
"start_date": {
"$ref": "#/$defs/originalArrangementDate"
},
"end_date": {
"$ref": "#/$defs/originalArrangementDate"
}
}
}
}
}
}
}
}
}
},
{
"if": {
"properties": {
"action": {
"const": "arrangement_transport"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "update"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
},
"required": [
"action",
"data"
]
},
"then": {
"properties": {
"data": {
"required": [
"existing_refs",
"arrangement"
],
"properties": {
"existing_refs": {
"required": [
"identifier"
]
},
"arrangement": {
"type": "object",
"additionalProperties": false,
"required": [
"mode",
"changes",
"selection"
],
"properties": {
"mode": {
"const": "update"
},
"ticket_description": { "type": "string", "minLength": 1, "pattern": "\\S" },
"changes": {
"type": "object",
"additionalProperties": false,
"required": [
"supplier",
"quantity"
],
"properties": {
"supplier": {
"$ref": "#/$defs/namedRef"
},
"remark": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "integer",
"minimum": 1
}
}
},
"selection": {
"type": "object",
"additionalProperties": false,
"required": [
"date"
],
"properties": {
"date": {
"$ref": "#/$defs/originalArrangementDate"
}
}
}
}
}
}
}
}
}
},
{
"if": {
"properties": {
"action": {
"const": "arrangement_other"
},
"data": {
"properties": {
"arrangement": {
"properties": {
"mode": {
"const": "update"
}
},
"required": [
"mode"
]
}
},
"required": [
"arrangement"
]
}
},
"required": [
"action",
"data"
]
},
"then": {
"properties": {
"data": {
"required": [
"existing_refs",
"arrangement"
],
"properties": {
"existing_refs": {
"required": [
"identifier"
]
},
"arrangement": {
"type": "object",
"additionalProperties": false,
"required": [
"mode",
"changes",
"selection"
],
"properties": {
"mode": {
"const": "update"
},
"changes": {
"type": "object",
"additionalProperties": false,
"required": [
"supplier"
],
"properties": {
"supplier": {
"$ref": "#/$defs/namedRef"
},
"remark": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "integer",
"minimum": 1
},
"filing": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"number": {
"type": "string",
"minLength": 1
},
"entry_port": {
"type": "string",
"minLength": 1
},
"exit_port": {
"type": "string",
"minLength": 1
}
}
}
}
},
"selection": {
"type": "object",
"additionalProperties": false,
"required": [
"date"
],
"properties": {
"date": {
"$ref": "#/$defs/originalArrangementDate"
},
"filing_date": {
"$ref": "#/$defs/originalArrangementDate"
}
}
}
}
}
}
}
}
}
}
],
"$defs": {
"originalArrangementDate": {
"description": "Original arrangement selector: full year is exact; omitted year is resolved uniquely from ERP in the selected group.",
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "string",
"pattern": "^(?:(?:01|03|05|07|08|10|12)-(?:0[1-9]|[12][0-9]|3[01])|(?:04|06|09|11)-(?:0[1-9]|[12][0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-9]))$"
}
]
},
"data": {
"type": "object",
"additionalProperties": false,
"properties": {
"customer": { "$ref": "#/$defs/namedRef" },
"product": { "$ref": "#/$defs/namedRef" },
"leader": { "$ref": "#/$defs/namedRef" },
"departure_dates": { "$ref": "#/$defs/dateList" },
"recurrence": { "$ref": "#/$defs/recurrence" },
"planned_capacity": { "type": "integer", "minimum": 1 },
"passenger_counts": { "$ref": "#/$defs/passengerCounts" },
"split_order": { "$ref": "#/$defs/splitOrder" },
"room_counts": { "$ref": "#/$defs/roomCounts" },
"special_requests": { "type": "string", "minLength": 1 },
"existing_refs": { "$ref": "#/$defs/existingRefs" },
"passenger_list": { "$ref": "#/$defs/passengerList" },
"updates": { "$ref": "#/$defs/updates" },
"arrangement": { "$ref": "#/$defs/arrangement" },
"transition": { "$ref": "#/$defs/transition" },
"visitor_name": { "type": "string", "minLength": 1 },
"export_types": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": { "$ref": "#/$defs/exportType" }
},
"confirmation": {
"type": "object",
"additionalProperties": false,
"required": ["type"],
"properties": { "type": { "$ref": "#/$defs/exportType" } }
}
}
},
"namedRef": {
"type": "object",
"additionalProperties": false,
"required": ["name", "keyword"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"keyword": { "type": "string", "minLength": 1 },
"source_region": { "type": "string", "minLength": 1 }
}
},
"existingRefs": {
"type": "object",
"additionalProperties": false,
"properties": {
"kind": { "enum": ["independent_order", "shared_plan", "shared_child_order"] },
"identifier": { "type": "string", "minLength": 1 },
"parent_group_no": { "type": "string", "minLength": 1 }
}
},
"dateList": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": { "type": "string", "format": "date" }
},
"recurrence": {
"type": "object",
"additionalProperties": false,
"required": ["start_date", "end_date"],
"properties": {
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"pattern": { "enum": ["daily", "weekly", "odd_days", "even_days", "specified_dates"] },
"weekday": {
"type": "array",
"uniqueItems": true,
"items": { "type": "integer", "minimum": 1, "maximum": 7 }
}
}
},
"passengerCounts": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"adult": { "type": "integer", "minimum": 0 },
"child_bed": { "type": "integer", "minimum": 0 },
"child_no_bed": { "type": "integer", "minimum": 0 },
"infant": { "type": "integer", "minimum": 0 },
"leader": { "type": "integer", "minimum": 0 },
"expected_total": { "type": "integer", "minimum": 1 }
},
"anyOf": [
{ "required": ["adult"] },
{ "required": ["child_bed"] },
{ "required": ["child_no_bed"] },
{ "required": ["infant"] },
{ "required": ["leader"] }
]
},
"splitOrder": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"customer": { "$ref": "#/$defs/namedRef" },
"passenger_counts": { "$ref": "#/$defs/passengerCounts" }
}
},
"roomCounts": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"SGL": { "type": "integer", "minimum": 1 },
"TWN": { "type": "integer", "minimum": 1 },
"TRP": { "type": "integer", "minimum": 1 },
"DBL": { "type": "integer", "minimum": 1 }
}
},
"passengerLeaderContact": {
"type": "object",
"additionalProperties": false,
"required": ["sequence", "name", "phone"],
"properties": {
"sequence": { "type": "integer", "minimum": 1, "maximum": 5000 },
"name": { "type": "string", "minLength": 1, "maxLength": 200 },
"phone": { "type": "string", "minLength": 1, "maxLength": 200 }
}
},
"passengerList": {
"type": "object",
"additionalProperties": false,
"required": ["operation", "row_count", "text"],
"properties": {
"operation": { "enum": ["import", "full_replace"] },
"confirmed": { "type": "boolean" },
"row_count": { "type": "integer", "minimum": 1, "description": "用户本次提供的游客行数,不代表订单总人数。" },
"text": { "type": "string", "minLength": 1, "description": "一个或多个完整 13 列游客行;序号用于定位对应游客位。" },
"leader_contact": { "$ref": "#/$defs/passengerLeaderContact" }
},
"allOf": [
{
"if": { "properties": { "operation": { "const": "full_replace" } }, "required": ["operation"] },
"then": { "required": ["confirmed"], "properties": { "confirmed": { "const": true } } }
}
]
},
"updateAction": {
"type": "object",
"additionalProperties": false,
"required": ["target", "operation"],
"properties": {
"target": { "$ref": "#/$defs/updateTarget" },
"operation": { "enum": ["set", "append", "delta", "clear"] },
"value": {}
}
},
"updateTarget": {
"type": "string",
"pattern": "^(twin_room_count|planned_capacity|lodging_note|departure_date|trip_days|customer|product|leader|route|status|remark|xiadanbeizhu|booking_note|pax\\.(adult|child_bed|child_no_bed|infant|leader|expected_total)|rooms\\.(SGL|TWN|TRP|DBL|HNM|TL)|prices\\.(adult|child_bed|child_no_bed|infant|leader))$"
},
"updates": {
"type": "object",
"additionalProperties": false,
"required": ["actions"],
"properties": {
"actions": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"items": { "$ref": "#/$defs/updateAction" }
}
}
},
"arrangement": {
"type": "object",
"additionalProperties": false,
"required": ["mode"],
"properties": {
"mode": { "enum": ["create", "update"] },
"changes": { "$ref": "#/$defs/arrangementChanges" },
"selection": {
"type": "object",
"additionalProperties": false,
"properties": {
"start_date": {
"$ref": "#/$defs/originalArrangementDate"
},
"end_date": {
"$ref": "#/$defs/originalArrangementDate"
},
"date": {
"$ref": "#/$defs/originalArrangementDate"
},
"filing_date": {
"$ref": "#/$defs/originalArrangementDate"
}
}
},
"resource": { "$ref": "#/$defs/namedRef" },
"supplier": { "$ref": "#/$defs/namedRef" },
"vehicle_type": { "type": "string", "minLength": 1, "pattern": "\\S" },
"ticket_description": { "type": "string", "minLength": 1, "pattern": "\\S" },
"item": { "type": "string", "minLength": 1 },
"room_type": { "type": "string", "minLength": 1 },
"date": { "type": "string", "format": "date" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"quantity": { "type": "integer", "minimum": 1 },
"room_count": { "type": "integer", "minimum": 1 },
"remark": { "type": "string", "minLength": 1 },
"filing": { "$ref": "#/$defs/filing" }
}
},
"arrangementChanges": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"resource": {
"$ref": "#/$defs/namedRef"
},
"end_date": {
"type": "string",
"format": "date"
},
"room_count": {
"type": "integer",
"minimum": 1
},
"supplier": {
"$ref": "#/$defs/namedRef"
},
"quantity": {
"type": "integer",
"minimum": 1
},
"remark": {
"type": "string",
"minLength": 1
},
"filing": {
"$ref": "#/$defs/filing"
}
}
},
"filing": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"number": { "type": "string", "minLength": 1 },
"date": { "type": "string", "format": "date" },
"entry_port": { "type": "string", "minLength": 1 },
"exit_port": { "type": "string", "minLength": 1 }
}
},
"transition": {
"type": "object",
"additionalProperties": false,
"required": ["to_status"],
"properties": { "to_status": { "enum": ["预订", "已确认", "收客中"] } }
},
"exportType": {
"enum": [
"xingyou-confirm",
"liantai-confirm",
"job-order",
"visitor-list",
"guide-confirm",
"hotel-preorder",
"transport-preorder",
"filing-current",
"filing-history",
"pickup-sign"
]
},
"independentUpdate": {
"properties": {
"data": {
"required": ["existing_refs", "updates"],
"anyOf": [
{ "properties": { "existing_refs": { "required": ["identifier"] } } },
{
"required": ["customer", "departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
],
"properties": {
"existing_refs": { "properties": { "kind": { "const": "independent_order" } }, "required": ["kind"] },
"updates": {
"properties": {
"actions": {
"items": {
"properties": {}
}
}
}
}
}
}
}
},
"sharedPlanUpdate": {
"properties": {
"data": {
"required": ["existing_refs", "updates"],
"anyOf": [
{ "properties": { "existing_refs": { "required": ["identifier"] } } },
{
"required": ["departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
],
"properties": {
"existing_refs": { "properties": { "kind": { "const": "shared_plan" } }, "required": ["kind"] },
"updates": {
"properties": {
"actions": {
"items": {
"properties": {}
}
}
}
}
}
}
}
},
"sharedChildUpdate": {
"properties": {
"data": {
"required": ["existing_refs", "updates"],
"anyOf": [
{ "properties": { "existing_refs": { "required": ["identifier"] } } },
{
"required": ["customer", "departure_dates"],
"properties": { "departure_dates": { "minItems": 1, "maxItems": 1 } }
}
],
"properties": {
"existing_refs": { "properties": { "kind": { "const": "shared_child_order" } }, "required": ["kind"] },
"updates": {
"properties": {
"actions": {
"items": {
"properties": {}
}
}
}
}
}
}
}
}
}
}