{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://th-hotel.local/schemas/booking-decision-input-v2.schema.json", "title": "BookingDecisionInputV2", "type": "object", "additionalProperties": false, "required": [ "contract_meta", "input_hash", "message_material", "layer3_result", "decision_context", "rooming_list_resolutions", "evidence_registry", "evidence_refs" ], "properties": { "contract_meta": { "$ref": "#/$defs/contractMeta" }, "input_hash": { "$ref": "#/$defs/sha256" }, "message_material": { "$ref": "#/$defs/messageMaterial" }, "layer3_result": { "$ref": "#/$defs/layer3Result" }, "decision_context": { "$ref": "#/$defs/decisionContext" }, "rooming_list_resolutions": { "type": "array", "items": { "$ref": "#/$defs/roomingListResolutionV2" } }, "evidence_registry": { "type": "array", "items": { "$ref": "#/$defs/evidenceRef" } }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } }, "$defs": { "nonBlank": { "type": "string", "minLength": 1 }, "nullableNonBlank": { "type": ["string", "null"], "minLength": 1 }, "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "contractMeta": { "type": "object", "additionalProperties": false, "required": [ "contract_version", "catalog_version", "parser_version", "agent_profile_version", "processing_run_id", "source_message_id", "source_revision" ], "properties": { "contract_version": { "const": "booking-contracts-v2" }, "catalog_version": { "$ref": "#/$defs/nonBlank" }, "parser_version": { "$ref": "#/$defs/nonBlank" }, "agent_profile_version": { "$ref": "#/$defs/nonBlank" }, "processing_run_id": { "$ref": "#/$defs/nonBlank" }, "source_message_id": { "$ref": "#/$defs/nonBlank" }, "source_revision": { "type": "integer", "minimum": 0 } } }, "evidenceIdList": { "type": "array", "items": { "$ref": "#/$defs/nonBlank" }, "uniqueItems": true }, "evidenceRef": { "type": "object", "additionalProperties": false, "required": [ "evidence_id", "kind", "source_message_id", "locator", "content_hash", "is_current_material" ], "properties": { "evidence_id": { "$ref": "#/$defs/nonBlank" }, "kind": { "enum": [ "CURRENT_SUBJECT", "CURRENT_BODY", "QUOTED_HISTORY", "ATTACHMENT", "WORKBOOK_SHEET", "WORKBOOK_ROW", "IMAGE", "OCR_TEXT", "CONTEXT_RECORD", "USER_CORRECTION" ] }, "source_message_id": { "$ref": "#/$defs/nonBlank" }, "locator": { "$ref": "#/$defs/nonBlank" }, "content_hash": { "$ref": "#/$defs/sha256" }, "is_current_material": { "type": "boolean" } } }, "messageMaterial": { "type": "object", "additionalProperties": false, "required": ["current", "history", "attachments"], "properties": { "current": { "$ref": "#/$defs/currentMessage" }, "history": { "type": "array", "items": { "$ref": "#/$defs/historyMessage" } }, "attachments": { "type": "array", "items": { "$ref": "#/$defs/attachmentMaterial" } } } }, "currentMessage": { "type": "object", "additionalProperties": false, "required": ["message_id", "subject", "body_text", "subject_evidence_ref", "body_evidence_ref"], "properties": { "message_id": { "$ref": "#/$defs/nonBlank" }, "subject": { "type": "string" }, "body_text": { "type": "string" }, "subject_evidence_ref": { "$ref": "#/$defs/nonBlank" }, "body_evidence_ref": { "$ref": "#/$defs/nonBlank" } } }, "historyMessage": { "type": "object", "additionalProperties": false, "required": ["sequence", "message_id", "body_text", "body_is_complete", "body_evidence_ref"], "properties": { "sequence": { "type": "integer", "minimum": 0 }, "message_id": { "$ref": "#/$defs/nonBlank" }, "body_text": { "type": "string" }, "body_is_complete": { "const": true }, "body_evidence_ref": { "$ref": "#/$defs/nonBlank" } } }, "attachmentMaterial": { "type": "object", "additionalProperties": false, "required": [ "attachment_id", "file_name", "media_type", "size_bytes", "content_hash", "material_observations", "evidence_refs" ], "properties": { "attachment_id": { "$ref": "#/$defs/nonBlank" }, "file_name": { "type": "string" }, "media_type": { "$ref": "#/$defs/nonBlank" }, "size_bytes": { "type": "integer", "minimum": 0 }, "content_hash": { "$ref": "#/$defs/sha256" }, "material_observations": { "type": "array", "items": { "$ref": "#/$defs/materialObservation" } }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "layer3Result": { "type": "object", "additionalProperties": false, "required": [ "parse_status", "source_facts", "structured_mentions", "target_bindings", "neutral_relationships", "material_observations", "display_information", "material_dispositions", "parse_issues", "evidence_refs" ], "properties": { "parse_status": { "enum": ["READY", "PARTIAL", "FAILED", "NOT_APPLICABLE"] }, "source_facts": { "type": "array", "items": { "$ref": "#/$defs/sourceFact" } }, "structured_mentions": { "type": "array", "items": { "$ref": "#/$defs/structuredMention" } }, "target_bindings": { "type": "array", "items": { "$ref": "#/$defs/targetBinding" } }, "neutral_relationships": { "type": "array", "items": { "$ref": "#/$defs/neutralRelationship" } }, "material_observations": { "type": "array", "items": { "$ref": "#/$defs/materialObservation" } }, "display_information": { "type": "array", "items": { "$ref": "#/$defs/displayInformation" } }, "material_dispositions": { "type": "array", "items": { "$ref": "#/$defs/materialDisposition" } }, "parse_issues": { "type": "array", "items": { "$ref": "#/$defs/contractIssue" } }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "jsonScalar": { "type": ["string", "number", "integer", "boolean", "null"] }, "sourceFact": { "type": "object", "additionalProperties": false, "required": [ "fact_id", "fact_role", "target_ref", "source_unit_ref", "room_item_ref", "source_value", "normalized_source_value", "evidence_refs" ], "properties": { "fact_id": { "$ref": "#/$defs/nonBlank" }, "fact_role": { "$ref": "#/$defs/nonBlank" }, "target_ref": { "$ref": "#/$defs/nullableNonBlank" }, "source_unit_ref": { "$ref": "#/$defs/nullableNonBlank" }, "room_item_ref": { "$ref": "#/$defs/nullableNonBlank" }, "source_value": { "$ref": "#/$defs/jsonScalar" }, "normalized_source_value": { "$ref": "#/$defs/jsonScalar" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "neutralParameters": { "type": "object", "propertyNames": { "not": { "enum": [ "business_type", "action_kind", "booking_type", "task_card", "candidate_decision", "linked_action", "derived_action" ] } }, "additionalProperties": { "$ref": "#/$defs/jsonScalar" } }, "structuredMention": { "type": "object", "additionalProperties": false, "required": ["mention_id", "semantic_code", "scope", "target_ref", "parameters", "evidence_refs"], "properties": { "mention_id": { "$ref": "#/$defs/nonBlank" }, "semantic_code": { "$ref": "#/$defs/nonBlank" }, "scope": { "enum": ["MESSAGE", "TARGET", "MATERIAL"] }, "target_ref": { "$ref": "#/$defs/nullableNonBlank" }, "parameters": { "$ref": "#/$defs/neutralParameters" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "targetBinding": { "type": "object", "additionalProperties": false, "required": ["binding_id", "material_ref", "target_ref", "binding_status", "evidence_refs"], "properties": { "binding_id": { "$ref": "#/$defs/nonBlank" }, "material_ref": { "$ref": "#/$defs/nonBlank" }, "target_ref": { "$ref": "#/$defs/nullableNonBlank" }, "binding_status": { "enum": ["BOUND", "UNRESOLVED", "AMBIGUOUS", "CONFLICT"] }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "neutralRelationship": { "type": "object", "additionalProperties": false, "required": ["relationship_id", "relationship_type", "from_target_ref", "to_target_ref", "evidence_refs"], "properties": { "relationship_id": { "$ref": "#/$defs/nonBlank" }, "relationship_type": { "enum": ["ALLOTMENT_SOURCE_TO_ACTUAL", "GROUP_CODE_REPLACEMENT", "SOURCE_TO_TARGET", "OTHER_NEUTRAL"] }, "from_target_ref": { "$ref": "#/$defs/nonBlank" }, "to_target_ref": { "$ref": "#/$defs/nonBlank" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "materialObservation": { "type": "object", "additionalProperties": false, "required": ["observation_id", "material_ref", "observation_kind", "target_ref", "attributes", "evidence_refs"], "properties": { "observation_id": { "$ref": "#/$defs/nonBlank" }, "material_ref": { "$ref": "#/$defs/nonBlank" }, "observation_kind": { "enum": [ "POSSIBLE_GUEST_LIST_SPREADSHEET", "IMAGE_ATTACHMENT", "PAYMENT_RELATED_TEXT", "RAW_ATTACHMENT", "WORKBOOK_STRUCTURE", "OTHER_NEUTRAL" ] }, "target_ref": { "$ref": "#/$defs/nullableNonBlank" }, "attributes": { "$ref": "#/$defs/neutralParameters" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "displayInformation": { "type": "object", "additionalProperties": false, "required": ["display_id", "scope", "target_ref", "source_label", "sequence", "evidence_refs"], "properties": { "display_id": { "$ref": "#/$defs/nonBlank" }, "scope": { "enum": ["MESSAGE", "TARGET"] }, "target_ref": { "$ref": "#/$defs/nullableNonBlank" }, "source_label": { "$ref": "#/$defs/nonBlank" }, "sequence": { "type": "integer", "minimum": 0 }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "materialDisposition": { "type": "object", "additionalProperties": false, "required": ["material_ref", "disposition", "evidence_refs"], "properties": { "material_ref": { "$ref": "#/$defs/nonBlank" }, "disposition": { "enum": ["FACT", "MENTION", "DISPLAY", "REVIEW", "IGNORED_AS_TEMPLATE"] }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "decisionContext": { "type": "object", "additionalProperties": false, "required": [ "context_scope", "target_candidates", "catalog_resolutions", "order_contexts", "direction_context", "issues", "evidence_refs" ], "properties": { "context_scope": { "enum": ["MESSAGE", "TARGETS"] }, "target_candidates": { "type": "array", "items": { "$ref": "#/$defs/targetCandidate" } }, "catalog_resolutions": { "type": "array", "items": { "$ref": "#/$defs/catalogResolution" } }, "order_contexts": { "type": "array", "items": { "$ref": "#/$defs/orderContextV2" } }, "direction_context": { "$ref": "#/$defs/directionContext" }, "issues": { "type": "array", "items": { "$ref": "#/$defs/contractIssue" } }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "targetCandidate": { "type": "object", "additionalProperties": false, "required": ["target_ref", "resolution_status", "group_code", "order_candidate_ids", "evidence_refs"], "properties": { "target_ref": { "$ref": "#/$defs/nonBlank" }, "resolution_status": { "enum": ["RESOLVED", "UNRESOLVED", "AMBIGUOUS", "CONFLICT"] }, "group_code": { "$ref": "#/$defs/nullableNonBlank" }, "order_candidate_ids": { "type": "array", "items": { "$ref": "#/$defs/nonBlank" }, "uniqueItems": true }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "catalogResolution": { "type": "object", "additionalProperties": false, "required": ["resolution_id", "target_ref", "resolution_kind", "catalog_scope", "status", "candidate_codes", "evidence_refs"], "properties": { "resolution_id": { "$ref": "#/$defs/nonBlank" }, "target_ref": { "$ref": "#/$defs/nonBlank" }, "resolution_kind": { "enum": ["ROOM_TYPE", "RATE_CODE", "ACCOUNT", "MARKET", "SOURCE"] }, "catalog_scope": { "enum": ["FIT", "GROUP", "NOT_APPLICABLE"] }, "status": { "enum": ["ZERO_CANDIDATES", "ONE_CANDIDATE", "MULTIPLE_CANDIDATES", "NOT_APPLICABLE"] }, "candidate_codes": { "type": "array", "items": { "$ref": "#/$defs/nonBlank" }, "uniqueItems": true }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "layer4ResolutionStatus": { "enum": [ "RESOLVED", "UNRESOLVED", "NOT_APPLICABLE" ] }, "roomtypeResolutionV2": { "type": "object", "additionalProperties": false, "required": ["value", "candidates", "status", "reason_code", "evidence_refs"], "properties": { "value": { "$ref": "#/$defs/nullableNonBlank" }, "candidates": { "type": "array", "items": { "$ref": "#/$defs/nonBlank" }, "uniqueItems": true }, "status": { "$ref": "#/$defs/layer4ResolutionStatus" }, "reason_code": { "$ref": "#/$defs/nonBlank" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } }, "allOf": [ { "if": { "properties": { "status": { "const": "RESOLVED" } } }, "then": { "properties": { "value": { "$ref": "#/$defs/nonBlank" }, "candidates": { "minItems": 1, "maxItems": 1 } } }, "else": { "properties": { "value": { "type": "null" } } } } ] }, "rateRuleSetResolutionV2": { "type": "object", "additionalProperties": false, "required": ["value", "status", "reason_code", "evidence_refs"], "properties": { "value": { "type": ["string", "null"], "enum": ["FIT", "GROUP", "GROUP_AND_FIT", null] }, "status": { "$ref": "#/$defs/layer4ResolutionStatus" }, "reason_code": { "$ref": "#/$defs/nonBlank" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } }, "allOf": [ { "if": { "properties": { "status": { "const": "RESOLVED" } } }, "then": { "properties": { "value": { "enum": ["FIT", "GROUP", "GROUP_AND_FIT"] } } }, "else": { "properties": { "value": { "type": "null" } } } } ] }, "ratePackageV2": { "type": "object", "additionalProperties": false, "required": ["rate_code", "breakfast_included", "breakfast_restaurant_code"], "properties": { "rate_code": { "$ref": "#/$defs/nonBlank" }, "breakfast_included": { "type": "boolean" }, "breakfast_restaurant_code": { "type": ["string", "null"], "enum": ["LEELA", "BUALUANG", null] } }, "oneOf": [ { "properties": { "breakfast_included": { "const": false }, "breakfast_restaurant_code": { "type": "null" } } }, { "properties": { "breakfast_included": { "const": true }, "breakfast_restaurant_code": { "enum": ["LEELA", "BUALUANG"] } } } ] }, "ratePackageResolutionV2": { "type": "object", "additionalProperties": false, "required": ["value", "candidates", "status", "reason_code", "evidence_refs"], "properties": { "value": { "anyOf": [{ "$ref": "#/$defs/ratePackageV2" }, { "type": "null" }] }, "candidates": { "type": "array", "items": { "$ref": "#/$defs/ratePackageV2" }, "uniqueItems": true }, "status": { "$ref": "#/$defs/layer4ResolutionStatus" }, "reason_code": { "$ref": "#/$defs/nonBlank" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } }, "allOf": [ { "if": { "properties": { "status": { "const": "RESOLVED" } } }, "then": { "properties": { "value": { "$ref": "#/$defs/ratePackageV2" }, "candidates": { "minItems": 1, "maxItems": 1 } } }, "else": { "properties": { "value": { "type": "null" } } } } ] }, "sourceRoomRateResolutionV2": { "type": "object", "additionalProperties": false, "required": ["room_item_ref", "resolution"], "properties": { "room_item_ref": { "$ref": "#/$defs/nonBlank" }, "resolution": { "$ref": "#/$defs/ratePackageResolutionV2" } } }, "rateOptionV2": { "type": "object", "additionalProperties": false, "required": [ "applicable_booking_types", "directory_company", "directory_rule_set", "source_room_rate_resolutions", "rate_package", "evidence_refs" ], "properties": { "applicable_booking_types": { "type": "array", "items": { "enum": ["FIT", "GROUP"] }, "minItems": 1, "maxItems": 2, "uniqueItems": true }, "directory_company": { "$ref": "#/$defs/nonBlank" }, "directory_rule_set": { "enum": ["FIT", "GROUP", "GROUP_AND_FIT"] }, "source_room_rate_resolutions": { "type": "array", "items": { "$ref": "#/$defs/sourceRoomRateResolutionV2" } }, "rate_package": { "$ref": "#/$defs/ratePackageResolutionV2" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "sourceRoomContextV2": { "type": "object", "additionalProperties": false, "required": [ "room_item_ref", "source_room_raw", "source_room_name", "quantity", "source_price_raw", "source_price", "source_breakfast_included", "source_breakfast_restaurant_code", "roomtype_resolution", "evidence_refs" ], "properties": { "room_item_ref": { "$ref": "#/$defs/nonBlank" }, "source_room_raw": { "$ref": "#/$defs/nullableNonBlank" }, "source_room_name": { "$ref": "#/$defs/nullableNonBlank" }, "quantity": { "type": ["integer", "null"], "minimum": 1 }, "source_price_raw": { "$ref": "#/$defs/nullableNonBlank" }, "source_price": { "type": ["number", "null"], "exclusiveMinimum": 0 }, "source_breakfast_included": { "type": ["boolean", "null"] }, "source_breakfast_restaurant_code": { "$ref": "#/$defs/nullableNonBlank" }, "roomtype_resolution": { "$ref": "#/$defs/roomtypeResolutionV2" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "sourceStayUnitContextV2": { "type": "object", "additionalProperties": false, "required": ["source_unit_ref", "arrival_date", "departure_date", "source_rooms", "evidence_refs"], "properties": { "source_unit_ref": { "$ref": "#/$defs/nonBlank" }, "arrival_date": { "$ref": "#/$defs/nullableNonBlank" }, "departure_date": { "$ref": "#/$defs/nullableNonBlank" }, "source_rooms": { "type": "array", "items": { "$ref": "#/$defs/sourceRoomContextV2" } }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "catalogAuditV2": { "type": "object", "additionalProperties": false, "required": [ "directory_version", "effective_mapping_version", "directory_manifest_sha256", "effective_mapping_manifest_sha256", "roomtype_projection_sha256", "rate_projection_sha256" ], "properties": { "directory_version": { "$ref": "#/$defs/nonBlank" }, "effective_mapping_version": { "$ref": "#/$defs/nonBlank" }, "directory_manifest_sha256": { "$ref": "#/$defs/sha256" }, "effective_mapping_manifest_sha256": { "$ref": "#/$defs/sha256" }, "roomtype_projection_sha256": { "$ref": "#/$defs/sha256" }, "rate_projection_sha256": { "$ref": "#/$defs/sha256" } } }, "orderContextV2": { "type": "object", "additionalProperties": false, "required": [ "order_scope_ref", "group_code", "source_profile_code", "source_units", "rate_options", "catalog_audit", "evidence_refs" ], "properties": { "order_scope_ref": { "$ref": "#/$defs/nonBlank" }, "group_code": { "$ref": "#/$defs/nullableNonBlank" }, "source_profile_code": { "enum": ["QBD", "LIANTAI"] }, "source_units": { "type": "array", "items": { "$ref": "#/$defs/sourceStayUnitContextV2" } }, "rate_options": { "type": "array", "items": { "$ref": "#/$defs/rateOptionV2" }, "minItems": 1, "maxItems": 2 }, "catalog_audit": { "$ref": "#/$defs/catalogAuditV2" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "directionContext": { "type": "object", "additionalProperties": false, "required": ["source_direction", "confidence", "evidence_refs"], "properties": { "source_direction": { "enum": ["INBOUND", "OUTBOUND", "INTERNAL", "UNKNOWN"] }, "confidence": { "enum": ["EXACT", "UNRESOLVED", "CONFLICT"] }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "roomingListResolutionV2": { "type": "object", "additionalProperties": false, "required": [ "material_ref", "attachment_id", "current_excel", "rooming_list_label", "tour_code", "tour_code_candidates", "target_status", "reason_code", "evidence_refs" ], "properties": { "material_ref": { "$ref": "#/$defs/nonBlank" }, "attachment_id": { "$ref": "#/$defs/nonBlank" }, "current_excel": { "type": "boolean" }, "rooming_list_label": { "type": "boolean" }, "tour_code": { "$ref": "#/$defs/nullableNonBlank" }, "tour_code_candidates": { "type": "array", "items": { "$ref": "#/$defs/nonBlank" }, "uniqueItems": true }, "target_status": { "$ref": "#/$defs/layer4ResolutionStatus" }, "reason_code": { "$ref": "#/$defs/nonBlank" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" } } }, "contractIssue": { "type": "object", "additionalProperties": false, "required": ["issue_id", "code", "severity", "scope", "target_ref", "message_key", "evidence_refs"], "properties": { "issue_id": { "$ref": "#/$defs/nonBlank" }, "code": { "$ref": "#/$defs/nonBlank" }, "severity": { "enum": ["INFO", "WARNING", "ERROR", "BLOCKER"] }, "scope": { "enum": ["MESSAGE", "MATERIAL", "TARGET", "FIELD", "RELATIONSHIP"] }, "target_ref": { "$ref": "#/$defs/nullableNonBlank" }, "message_key": { "$ref": "#/$defs/nonBlank" }, "evidence_refs": { "$ref": "#/$defs/evidenceIdList" }, "retryable": { "type": "boolean" } } } } }