1407 lines
31 KiB
JSON
1407 lines
31 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://th-hotel.local/schemas/booking-decision-input-v3.schema.json",
|
|
"title": "BookingDecisionInputV3",
|
|
"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-v3"
|
|
},
|
|
"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",
|
|
"source_segment_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"
|
|
},
|
|
"source_segment_ref": {
|
|
"$ref": "#/$defs/nullableNonBlank"
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"stay_segments",
|
|
"evidence_refs"
|
|
],
|
|
"properties": {
|
|
"source_unit_ref": {
|
|
"$ref": "#/$defs/nonBlank"
|
|
},
|
|
"stay_segments": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"$ref": "#/$defs/sourceStaySegmentContextV3"
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
},
|
|
"sourceStaySegmentContextV3": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"segment_ref",
|
|
"arrival_date",
|
|
"departure_date",
|
|
"source_rooms",
|
|
"evidence_refs"
|
|
],
|
|
"properties": {
|
|
"segment_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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|