MCP 服务器

Hum Internet Availability

com.letshum/internet-availability
电商与零售 通信 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Checks U.S. address-level internet availability and plans, then supports validated broadband order submission and tracking.

check_availability
Check broadband availability
Start with {address}; continue only with a returned candidate_id and requested unit, {lookup_id} to poll, or the current question_set_id and answers. FCC findings are area-level evidence. Select only returned executable offer_id values.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', 'title': 'check_availabilityArguments', 'properties': {'unit': {'anyOf': [{'type': 'string', 'maxLength': 100, 'minLength': 1}, {'type': 'null'}], 'title': 'Unit', 'default': None}, 'address': {'anyOf': [{'type': 'string', 'maxLength': 300, 'minLength': 1}, {'type': 'null'}], 'title': 'Address', 'default': None}, 'answers': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Answers', 'default': None}, 'lookup_id': {'anyOf': [{'type': 'string', 'maxLength': 256, 'minLength': 1}, {'type': 'null'}], 'title': 'Lookup Id', 'default': None}, 'candidate_id': {'anyOf': [{'type': 'string', 'maxLength': 2048, 'minLength': 1}, {'type': 'null'}], 'title': 'Candidate Id', 'default': None}, 'question_set_id': {'anyOf': [{'type': 'string', 'maxLength': 256, 'minLength': 1}, {'type': 'null'}], 'title': 'Question Set Id', 'default': None}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$defs': {'Offer': {'type': 'object', 'title': 'Offer', 'required': ['name', 'pricing', 'fees', 'contract_terms', 'offer_id', 'provider_id', 'qualification_revision', 'qualified_at', 'expires_at', 'orderable_through_hum'], 'properties': {'fees': {'$ref': '#/$defs/FeeFacts'}, 'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'pricing': {'$ref': '#/$defs/MoneyFacts'}, 'offer_id': {'type': 'string', 'title': 'Offer Id', 'maxLength': 256, 'minLength': 1}, 'conditions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditions', 'maxItems': 50}, 'data_limit': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Data Limit', 'default': None}, 'expires_at': {'type': 'string', 'title': 'Expires At', 'format': 'date-time'}, 'technology': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Technology', 'default': None}, 'provider_id': {'type': 'string', 'title': 'Provider Id', 'maxLength': 256, 'minLength': 1}, 'upload_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Upload Mbps', 'default': None}, 'qualified_at': {'type': 'string', 'title': 'Qualified At', 'format': 'date-time'}, 'download_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Download Mbps', 'default': None}, 'contract_terms': {'$ref': '#/$defs/ContractTerms'}, 'orderable_through_hum': {'type': 'boolean', 'const': True, 'title': 'Orderable Through Hum'}, 'qualification_revision': {'type': 'integer', 'title': 'Qualification Revision', 'minimum': 1}}, 'additionalProperties': False}, 'Sources': {'type': 'object', 'title': 'Sources', 'required': ['fcc', 'live_provider_check'], 'properties': {'fcc': {'$ref': '#/$defs/SourceState'}, 'live_provider_check': {'$ref': '#/$defs/SourceState'}}, 'additionalProperties': False}, 'FccMatch': {'type': 'object', 'title': 'FccMatch', 'required': ['granularity'], 'properties': {'data_as_of': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Data As Of', 'default': None}, 'granularity': {'enum': ['census_block', 'census_tract'], 'type': 'string', 'title': 'Granularity'}}, 'additionalProperties': False}, 'FeeFacts': {'type': 'object', 'title': 'FeeFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'activation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Activation Cents', 'default': None}, 'self_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Self Installation Cents', 'default': None}, 'recurring_equipment_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Recurring Equipment Cents', 'default': None}, 'professional_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Professional Installation Cents', 'default': None}}, 'additionalProperties': False}, 'Provider': {'type': 'object', 'title': 'Provider', 'required': ['provider_id', 'name', 'provenance', 'qualification_status'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'offers': {'type': 'array', 'items': {'$ref': '#/$defs/Offer'}, 'title': 'Offers', 'maxItems': 500}, 'fcc_match': {'anyOf': [{'$ref': '#/$defs/FccMatch'}, {'type': 'null'}], 'default': None}, 'provenance': {'type': 'array', 'items': {'enum': ['fcc', 'live_provider_check'], 'type': 'string'}, 'title': 'Provenance', 'maxItems': 2, 'minItems': 1}, 'provider_id': {'type': 'string', 'title': 'Provider Id', 'maxLength': 256, 'minLength': 1}, 'catalog_plans': {'type': 'array', 'items': {'$ref': '#/$defs/InformationalPlan'}, 'title': 'Catalog Plans', 'maxItems': 500}, 'qualification_status': {'enum': ['not_checked', 'checking', 'needs_information', 'qualified', 'not_qualified', 'failed'], 'type': 'string', 'title': 'Qualification Status'}, 'orderable_through_hum': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Orderable Through Hum', 'default': None}}, 'additionalProperties': False}, 'Question': {'type': 'object', 'title': 'Question', 'required': ['question_id', 'prompt', 'type', 'required', 'sensitivity'], 'properties': {'type': {'enum': ['string', 'boolean', 'single_choice', 'date'], 'type': 'string', 'title': 'Type'}, 'prompt': {'type': 'string', 'title': 'Prompt', 'maxLength': 500, 'minLength': 1}, 'choices': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'maxItems': 100}, {'type': 'null'}], 'title': 'Choices', 'default': None}, 'required': {'type': 'boolean', 'title': 'Required'}, 'question_id': {'type': 'string', 'title': 'Question Id', 'maxLength': 256, 'minLength': 1}, 'sensitivity': {'enum': ['none', 'personal', 'sensitive'], 'type': 'string', 'title': 'Sensitivity'}}, 'additionalProperties': False}, 'Candidate': {'type': 'object', 'title': 'Candidate', 'required': ['candidate_id', 'display', 'requires_unit'], 'properties': {'display': {'type': 'string', 'title': 'Display', 'maxLength': 500, 'minLength': 1}, 'candidate_id': {'type': 'string', 'title': 'Candidate Id', 'maxLength': 2048, 'minLength': 1}, 'requires_unit': {'type': 'boolean', 'title': 'Requires Unit'}}, 'additionalProperties': False}, 'MoneyFacts': {'type': 'object', 'title': 'MoneyFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'intro_months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Intro Months', 'default': None}, 'monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Monthly Cents', 'default': None}, 'regular_monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Regular Monthly Cents', 'default': None}}, 'additionalProperties': False}, 'ErrorDetail': {'type': 'object', 'title': 'ErrorDetail', 'required': ['code', 'message', 'retryable', 'next_action'], 'properties': {'code': {'enum': ['invalid_request', 'invalid_address', 'invalid_answer', 'not_found', 'expired', 'offer_changed', 'offer_unavailable', 'validation_required', 'confirmation_required', 'idempotency_conflict', 'duplicate_order', 'rate_limited', 'temporarily_unavailable'], 'type': 'string', 'title': 'Code'}, 'message': {'type': 'string', 'title': 'Message', 'maxLength': 500, 'minLength': 1}, 'retryable': {'type': 'boolean', 'title': 'Retryable'}, 'next_action': {'type': 'string', 'title': 'Next Action', 'maxLength': 500, 'minLength': 1}, 'field_errors': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'string'}}, {'type': 'null'}], 'title': 'Field Errors', 'default': None}, 'correlation_id': {'anyOf': [{'type': 'string', 'maxLength': 128}, {'type': 'null'}], 'title': 'Correlation Id', 'default': None}, 'retry_after_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'minimum': 1}, {'type': 'null'}], 'title': 'Retry After Seconds', 'default': None}}, 'additionalProperties': False}, 'SourceState': {'type': 'object', 'title': 'SourceState', 'required': ['status'], 'properties': {'error': {'anyOf': [{'$ref': '#/$defs/ErrorDetail'}, {'type': 'null'}], 'default': None}, 'status': {'enum': ['checking', 'needs_information', 'complete', 'failed', 'timed_out'], 'type': 'string', 'title': 'Status'}, 'checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Checked At', 'default': None}, 'data_as_of': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Data As Of', 'default': None}}, 'additionalProperties': False}, 'ContractTerms': {'type': 'object', 'title': 'ContractTerms', 'properties': {'months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Months', 'default': None}, 'required': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Required', 'default': None}}, 'additionalProperties': False}, 'InformationalPlan': {'type': 'object', 'title': 'InformationalPlan', 'required': ['name', 'pricing', 'fees', 'contract_terms'], 'properties': {'fees': {'$ref': '#/$defs/FeeFacts'}, 'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'pricing': {'$ref': '#/$defs/MoneyFacts'}, 'conditions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditions', 'maxItems': 50}, 'data_limit': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Data Limit', 'default': None}, 'technology': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Technology', 'default': None}, 'upload_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Upload Mbps', 'default': None}, 'download_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Download Mbps', 'default': None}, 'contract_terms': {'$ref': '#/$defs/ContractTerms'}}, 'additionalProperties': False}, 'NormalizedAddress': {'type': 'object', 'title': 'NormalizedAddress', 'required': ['display', 'street_line', 'city', 'state', 'postal_code'], 'properties': {'city': {'type': 'string', 'title': 'City', 'maxLength': 100, 'minLength': 1}, 'unit': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Unit', 'default': None}, 'state': {'type': 'string', 'title': 'State', 'pattern': '^[A-Z]{2}$'}, 'display': {'type': 'string', 'title': 'Display', 'maxLength': 500, 'minLength': 1}, 'postal_code': {'type': 'string', 'title': 'Postal Code', 'pattern': '^\\d{5}(?:-\\d{4})?$'}, 'street_line': {'type': 'string', 'title': 'Street Line', 'maxLength': 300, 'minLength': 1}}, 'additionalProperties': False}}, 'title': 'AvailabilityEnvelope', 'required': ['schema_version', 'status'], 'properties': {'error': {'anyOf': [{'$ref': '#/$defs/ErrorDetail'}, {'type': 'null'}], 'default': None}, 'status': {'enum': ['checking', 'needs_information', 'complete', 'failed', 'error'], 'type': 'string', 'title': 'Status'}, 'message': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'title': 'Message', 'default': None}, 'sources': {'anyOf': [{'$ref': '#/$defs/Sources'}, {'type': 'null'}], 'default': None}, 'revision': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Revision', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings', 'maxItems': 20}, 'lookup_id': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'title': 'Lookup Id', 'default': None}, 'providers': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/Provider'}, 'maxItems': 500}, {'type': 'null'}], 'title': 'Providers', 'default': None}, 'questions': {'type': 'array', 'items': {'$ref': '#/$defs/Question'}, 'title': 'Questions', 'maxItems': 100}, 'candidates': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/Candidate'}, 'maxItems': 5}, {'type': 'null'}], 'title': 'Candidates', 'default': None}, 'expires_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Expires At', 'default': None}, 'next_action': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'title': 'Next Action', 'default': None}, 'required_field': {'anyOf': [{'type': 'string', 'const': 'unit'}, {'type': 'null'}], 'title': 'Required Field', 'default': None}, 'schema_version': {'type': 'integer', 'const': 4, 'title': 'Schema Version'}, 'question_set_id': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'title': 'Question Set Id', 'default': None}, 'clarification_type': {'anyOf': [{'enum': ['candidate_selection', 'unit_required'], 'type': 'string'}, {'type': 'null'}], 'title': 'Clarification Type', 'default': None}, 'normalized_address': {'anyOf': [{'$ref': '#/$defs/NormalizedAddress'}, {'type': 'null'}], 'default': None}, 'retry_after_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'minimum': 1}, {'type': 'null'}], 'title': 'Retry After Seconds', 'default': None}}, 'additionalProperties': False}
create_order
Create internet order
Only after presenting the current review and obtaining authorization for its terms_hash, commit with its validation_token and one stable idempotency_key. After a lost or uncertain response, call get_order first; do not blindly resubmit.
可能执行破坏性操作 可访问外部资源 幂等
输入模式
{'type': 'object', '$defs': {'Confirmation': {'type': 'object', 'title': 'Confirmation', 'required': ['terms_hash', 'confirmed'], 'properties': {'confirmed': {'type': 'boolean', 'const': True, 'title': 'Confirmed'}, 'terms_hash': {'type': 'string', 'title': 'Terms Hash', 'maxLength': 256, 'minLength': 1}}, 'additionalProperties': False}}, 'title': 'create_orderArguments', 'required': ['checkout_id', 'validation_token', 'idempotency_key', 'confirmation'], 'properties': {'checkout_id': {'type': 'string', 'title': 'Checkout Id', 'maxLength': 256, 'minLength': 1}, 'confirmation': {'$ref': '#/$defs/Confirmation'}, 'idempotency_key': {'type': 'string', 'title': 'Idempotency Key', 'maxLength': 128, 'minLength': 1}, 'validation_token': {'type': 'string', 'title': 'Validation Token', 'maxLength': 256, 'minLength': 1}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$defs': {'Evidence': {'type': 'object', 'title': 'Evidence', 'required': ['kind', 'recorded_at'], 'properties': {'kind': {'type': 'string', 'title': 'Kind', 'maxLength': 100, 'minLength': 1}, 'recorded_at': {'type': 'string', 'title': 'Recorded At', 'format': 'date-time'}}, 'additionalProperties': False}, 'FeeFacts': {'type': 'object', 'title': 'FeeFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'activation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Activation Cents', 'default': None}, 'self_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Self Installation Cents', 'default': None}, 'recurring_equipment_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Recurring Equipment Cents', 'default': None}, 'professional_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Professional Installation Cents', 'default': None}}, 'additionalProperties': False}, 'PlanFacts': {'type': 'object', 'title': 'PlanFacts', 'required': ['name', 'pricing', 'fees', 'contract_terms'], 'properties': {'fees': {'$ref': '#/$defs/FeeFacts'}, 'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'pricing': {'$ref': '#/$defs/MoneyFacts'}, 'conditions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditions', 'maxItems': 50}, 'data_limit': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Data Limit', 'default': None}, 'technology': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Technology', 'default': None}, 'upload_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Upload Mbps', 'default': None}, 'download_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Download Mbps', 'default': None}, 'contract_terms': {'$ref': '#/$defs/ContractTerms'}}, 'additionalProperties': False}, 'MoneyFacts': {'type': 'object', 'title': 'MoneyFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'intro_months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Intro Months', 'default': None}, 'monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Monthly Cents', 'default': None}, 'regular_monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Regular Monthly Cents', 'default': None}}, 'additionalProperties': False}, 'ErrorDetail': {'type': 'object', 'title': 'ErrorDetail', 'required': ['code', 'message', 'retryable', 'next_action'], 'properties': {'code': {'enum': ['invalid_request', 'invalid_address', 'invalid_answer', 'not_found', 'expired', 'offer_changed', 'offer_unavailable', 'validation_required', 'confirmation_required', 'idempotency_conflict', 'duplicate_order', 'rate_limited', 'temporarily_unavailable'], 'type': 'string', 'title': 'Code'}, 'message': {'type': 'string', 'title': 'Message', 'maxLength': 500, 'minLength': 1}, 'retryable': {'type': 'boolean', 'title': 'Retryable'}, 'next_action': {'type': 'string', 'title': 'Next Action', 'maxLength': 500, 'minLength': 1}, 'field_errors': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'string'}}, {'type': 'null'}], 'title': 'Field Errors', 'default': None}, 'correlation_id': {'anyOf': [{'type': 'string', 'maxLength': 128}, {'type': 'null'}], 'title': 'Correlation Id', 'default': None}, 'retry_after_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'minimum': 1}, {'type': 'null'}], 'title': 'Retry After Seconds', 'default': None}}, 'additionalProperties': False}, 'ContractTerms': {'type': 'object', 'title': 'ContractTerms', 'properties': {'months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Months', 'default': None}, 'required': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Required', 'default': None}}, 'additionalProperties': False}}, 'title': 'OrderEnvelope', 'required': ['schema_version', 'status'], 'properties': {'error': {'anyOf': [{'$ref': '#/$defs/ErrorDetail'}, {'type': 'null'}], 'default': None}, 'status': {'enum': ['queued', 'submitting', 'accepted_by_fulfillment', 'rejected_by_fulfillment', 'submission_unknown', 'not_submitted', 'error'], 'type': 'string', 'title': 'Status'}, 'evidence': {'anyOf': [{'$ref': '#/$defs/Evidence'}, {'type': 'null'}], 'default': None}, 'order_id': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'title': 'Order Id', 'default': None}, 'next_action': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'title': 'Next Action', 'default': None}, 'submitted_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Submitted At', 'default': None}, 'provider_name': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}], 'title': 'Provider Name', 'default': None}, 'schema_version': {'type': 'integer', 'const': 4, 'title': 'Schema Version'}, 'last_checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Last Checked At', 'default': None}, 'selected_offer_summary': {'anyOf': [{'$ref': '#/$defs/PlanFacts'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}
get_order
Get internet order
Retrieve recorded fulfillment evidence with checkout_id, especially after a lost or uncertain create_order response. Public statuses do not prove ISP acceptance or installation confirmation.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', 'title': 'get_orderArguments', 'required': ['checkout_id'], 'properties': {'checkout_id': {'type': 'string', 'title': 'Checkout Id', 'maxLength': 256, 'minLength': 1}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$defs': {'Evidence': {'type': 'object', 'title': 'Evidence', 'required': ['kind', 'recorded_at'], 'properties': {'kind': {'type': 'string', 'title': 'Kind', 'maxLength': 100, 'minLength': 1}, 'recorded_at': {'type': 'string', 'title': 'Recorded At', 'format': 'date-time'}}, 'additionalProperties': False}, 'FeeFacts': {'type': 'object', 'title': 'FeeFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'activation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Activation Cents', 'default': None}, 'self_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Self Installation Cents', 'default': None}, 'recurring_equipment_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Recurring Equipment Cents', 'default': None}, 'professional_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Professional Installation Cents', 'default': None}}, 'additionalProperties': False}, 'PlanFacts': {'type': 'object', 'title': 'PlanFacts', 'required': ['name', 'pricing', 'fees', 'contract_terms'], 'properties': {'fees': {'$ref': '#/$defs/FeeFacts'}, 'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'pricing': {'$ref': '#/$defs/MoneyFacts'}, 'conditions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditions', 'maxItems': 50}, 'data_limit': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Data Limit', 'default': None}, 'technology': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Technology', 'default': None}, 'upload_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Upload Mbps', 'default': None}, 'download_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Download Mbps', 'default': None}, 'contract_terms': {'$ref': '#/$defs/ContractTerms'}}, 'additionalProperties': False}, 'MoneyFacts': {'type': 'object', 'title': 'MoneyFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'intro_months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Intro Months', 'default': None}, 'monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Monthly Cents', 'default': None}, 'regular_monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Regular Monthly Cents', 'default': None}}, 'additionalProperties': False}, 'ErrorDetail': {'type': 'object', 'title': 'ErrorDetail', 'required': ['code', 'message', 'retryable', 'next_action'], 'properties': {'code': {'enum': ['invalid_request', 'invalid_address', 'invalid_answer', 'not_found', 'expired', 'offer_changed', 'offer_unavailable', 'validation_required', 'confirmation_required', 'idempotency_conflict', 'duplicate_order', 'rate_limited', 'temporarily_unavailable'], 'type': 'string', 'title': 'Code'}, 'message': {'type': 'string', 'title': 'Message', 'maxLength': 500, 'minLength': 1}, 'retryable': {'type': 'boolean', 'title': 'Retryable'}, 'next_action': {'type': 'string', 'title': 'Next Action', 'maxLength': 500, 'minLength': 1}, 'field_errors': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'string'}}, {'type': 'null'}], 'title': 'Field Errors', 'default': None}, 'correlation_id': {'anyOf': [{'type': 'string', 'maxLength': 128}, {'type': 'null'}], 'title': 'Correlation Id', 'default': None}, 'retry_after_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'minimum': 1}, {'type': 'null'}], 'title': 'Retry After Seconds', 'default': None}}, 'additionalProperties': False}, 'ContractTerms': {'type': 'object', 'title': 'ContractTerms', 'properties': {'months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Months', 'default': None}, 'required': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Required', 'default': None}}, 'additionalProperties': False}}, 'title': 'OrderEnvelope', 'required': ['schema_version', 'status'], 'properties': {'error': {'anyOf': [{'$ref': '#/$defs/ErrorDetail'}, {'type': 'null'}], 'default': None}, 'status': {'enum': ['queued', 'submitting', 'accepted_by_fulfillment', 'rejected_by_fulfillment', 'submission_unknown', 'not_submitted', 'error'], 'type': 'string', 'title': 'Status'}, 'evidence': {'anyOf': [{'$ref': '#/$defs/Evidence'}, {'type': 'null'}], 'default': None}, 'order_id': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'title': 'Order Id', 'default': None}, 'next_action': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'title': 'Next Action', 'default': None}, 'submitted_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Submitted At', 'default': None}, 'provider_name': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}], 'title': 'Provider Name', 'default': None}, 'schema_version': {'type': 'integer', 'const': 4, 'title': 'Schema Version'}, 'last_checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Last Checked At', 'default': None}, 'selected_offer_summary': {'anyOf': [{'$ref': '#/$defs/PlanFacts'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}
validate_order
Validate internet order
Start: {"lookup_id":"<returned lookup_id>","offer_id":"<returned offer_id>"}. Poll: {"checkout_id":"<returned checkout_id>"}. Edit: {"checkout_id":"<returned checkout_id>","expected_revision":<current revision>,"details":{<changed fields>}}. Use exactly one shape. Customer, installation, consents and internet_addons belong inside details, never at the root. While checking, wait retry_after_seconds and poll without details. Edits restart validation. On stale expected_revision, retrieve with checkout_id only before editing at the current revision. required_fields defines the contract; field_errors identifies actual missing/invalid fields relative to details. Refreshes the offer and returns an exact review without submitting an order. When preferred installation dates are required, provide both first and second choices using a time_window value allowed by the input schema. Installation type must be self or professional. Record the customer's explicit true or false choices for auto-pay and paperless billing; never enable them silently. Match the customer's equipment preference using returned equipment_options and catalog facts. Customer-owned equipment, included provider equipment and optional paid equipment are different choices. A free provider gateway does not satisfy an own-equipment request. Price or included status alone does not establish ownership. If an offer lacks the requested option, inspect another qualified offer or explain the limitation and ask the customer to choose; never fabricate an option. Send the complete selection in details.internet_addons using returned option_id and quantity values. Omit it to preserve current/default selections; [] declines optional items. Select at most one radio option and retain dependent parents. Ready means technically valid, not necessarily correct for the customer. Compare the entire review with the customer's budget, speed, equipment, billing and installation choices. Resolve mismatches before requesting authorization. Present every returned charge, discount, condition and unknown; do not invent a price adjustment for declined auto-pay or paperless billing. Never repeat the service PIN or full date of birth, even if supplied earlier. Keep capability IDs, terms_hash and validation_token out of customer-facing prose. Obtain explicit authorization for this exact current review before create_order; shopping intent or validation alone is not authorization.
可访问外部资源 幂等
输入模式
{'type': 'object', '$defs': {'OrderDetails': {'type': 'object', 'title': 'OrderDetails', 'properties': {'consents': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'boolean'}}, {'type': 'null'}], 'title': 'Consents', 'default': None, 'description': 'Customer consent choices at details.consents, using returned consent names.'}, 'customer': {'anyOf': [{'$ref': '#/$defs/CustomerDetails'}, {'type': 'null'}], 'default': None}, 'installation': {'anyOf': [{'$ref': '#/$defs/InstallationDetails'}, {'type': 'null'}], 'default': None}, 'internet_addons': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/EquipmentSelection'}, 'maxItems': 100}, {'type': 'null'}], 'title': 'Internet Addons', 'default': None, 'description': 'Complete equipment selection at details.internet_addons using returned option IDs and quantities; retain dependent parents. Omit to keep current selections/defaults; send [] to decline optional equipment. A free provider gateway is not owned equipment.'}}, 'description': 'Edit payload nested inside validate_order.details, never root tool arguments.', 'additionalProperties': False}, 'MailingAddress': {'type': 'object', 'title': 'MailingAddress', 'properties': {'city': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'City', 'default': None}, 'line1': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}], 'title': 'Line1', 'default': None}, 'line2': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Line2', 'default': None}, 'state': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{2}$'}, {'type': 'null'}], 'title': 'State', 'default': None}, 'postal_code': {'anyOf': [{'type': 'string', 'pattern': '^\\d{5}(?:-\\d{4})?$'}, {'type': 'null'}], 'title': 'Postal Code', 'default': None}, 'same_as_service': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Same As Service', 'default': None}}, 'additionalProperties': False}, 'PreferredDates': {'type': 'object', 'title': 'PreferredDates', 'properties': {'first': {'anyOf': [{'$ref': '#/$defs/InstallationChoice'}, {'type': 'null'}], 'default': None}, 'second': {'anyOf': [{'$ref': '#/$defs/InstallationChoice'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}, 'CustomerDetails': {'type': 'object', 'title': 'CustomerDetails', 'properties': {'email': {'anyOf': [{'type': 'string', 'maxLength': 254}, {'type': 'null'}], 'title': 'Email', 'default': None}, 'last_name': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Last Name', 'default': None}, 'first_name': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'First Name', 'default': None}, 'preferences': {'anyOf': [{'$ref': '#/$defs/BillingPreferences'}, {'type': 'null'}], 'default': None}, 'service_pin': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}$'}, {'type': 'null'}], 'title': 'Service Pin', 'default': None}, 'phone_number': {'anyOf': [{'type': 'string', 'maxLength': 40}, {'type': 'null'}], 'title': 'Phone Number', 'default': None}, 'date_of_birth': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Date Of Birth', 'default': None}, 'mailing_address': {'anyOf': [{'$ref': '#/$defs/MailingAddress'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}, 'BillingPreferences': {'type': 'object', 'title': 'BillingPreferences', 'properties': {'auto_pay': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Auto Pay', 'default': None}, 'paperless_billing': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Paperless Billing', 'default': None}}, 'additionalProperties': False}, 'EquipmentSelection': {'type': 'object', 'title': 'EquipmentSelection', 'required': ['option_id', 'quantity'], 'properties': {'quantity': {'type': 'integer', 'title': 'Quantity', 'minimum': 1}, 'option_id': {'type': 'string', 'title': 'Option Id', 'maxLength': 256, 'minLength': 1}}, 'additionalProperties': False}, 'InstallationChoice': {'type': 'object', 'title': 'InstallationChoice', 'properties': {'date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Date', 'default': None}, 'time_window': {'anyOf': [{'enum': ['8:00 AM - 12:00 PM (Local Time)', '12:00 PM - 5:00 PM (Local Time)'], 'type': 'string'}, {'type': 'null'}], 'title': 'Time Window', 'default': None}}, 'additionalProperties': False}, 'InstallationDetails': {'type': 'object', 'title': 'InstallationDetails', 'properties': {'type': {'anyOf': [{'enum': ['self', 'professional'], 'type': 'string'}, {'type': 'null'}], 'title': 'Type', 'default': None}, 'preferred_dates': {'anyOf': [{'$ref': '#/$defs/PreferredDates'}, {'type': 'null'}], 'default': None}, 'desired_service_start_date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Desired Service Start Date', 'default': None}}, 'additionalProperties': False}}, 'title': 'validate_orderArguments', 'properties': {'details': {'anyOf': [{'$ref': '#/$defs/OrderDetails'}, {'type': 'null'}], 'default': None}, 'offer_id': {'anyOf': [{'type': 'string', 'maxLength': 256, 'minLength': 1}, {'type': 'null'}], 'title': 'Offer Id', 'default': None}, 'lookup_id': {'anyOf': [{'type': 'string', 'maxLength': 256, 'minLength': 1}, {'type': 'null'}], 'title': 'Lookup Id', 'default': None}, 'checkout_id': {'anyOf': [{'type': 'string', 'maxLength': 256, 'minLength': 1}, {'type': 'null'}], 'title': 'Checkout Id', 'default': None}, 'expected_revision': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Expected Revision', 'default': None}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$defs': {'FeeFacts': {'type': 'object', 'title': 'FeeFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'activation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Activation Cents', 'default': None}, 'self_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Self Installation Cents', 'default': None}, 'recurring_equipment_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Recurring Equipment Cents', 'default': None}, 'professional_installation_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Professional Installation Cents', 'default': None}}, 'additionalProperties': False}, 'PlanFacts': {'type': 'object', 'title': 'PlanFacts', 'required': ['name', 'pricing', 'fees', 'contract_terms'], 'properties': {'fees': {'$ref': '#/$defs/FeeFacts'}, 'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'pricing': {'$ref': '#/$defs/MoneyFacts'}, 'conditions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditions', 'maxItems': 50}, 'data_limit': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'number'}, {'type': 'null'}], 'title': 'Data Limit', 'default': None}, 'technology': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Technology', 'default': None}, 'upload_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Upload Mbps', 'default': None}, 'download_mbps': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'title': 'Download Mbps', 'default': None}, 'contract_terms': {'$ref': '#/$defs/ContractTerms'}}, 'additionalProperties': False}, 'CartReview': {'type': 'object', 'title': 'CartReview', 'required': ['selected_plan', 'included_products', 'one_time_fees', 'total_amount'], 'properties': {'total_amount': {'$ref': '#/$defs/OrderAmount'}, 'one_time_fees': {'type': 'array', 'items': {'$ref': '#/$defs/OneTimeFee'}, 'title': 'One Time Fees', 'maxItems': 100}, 'selected_plan': {'$ref': '#/$defs/IncludedProduct'}, 'bundle_discount': {'anyOf': [{'$ref': '#/$defs/OrderAmount'}, {'type': 'null'}], 'default': None}, 'included_products': {'$ref': '#/$defs/IncludedProducts'}}, 'additionalProperties': False}, 'MoneyFacts': {'type': 'object', 'title': 'MoneyFacts', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'title': 'Currency', 'pattern': '^[A-Z]{3}$'}, 'intro_months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Intro Months', 'default': None}, 'monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Monthly Cents', 'default': None}, 'regular_monthly_cents': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Regular Monthly Cents', 'default': None}}, 'additionalProperties': False}, 'OneTimeFee': {'type': 'object', 'title': 'OneTimeFee', 'required': ['name', 'description', 'pricing', 'fee_type'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'pricing': {'$ref': '#/$defs/OrderAmount'}, 'fee_type': {'type': 'string', 'title': 'Fee Type', 'maxLength': 100, 'minLength': 1}, 'description': {'type': 'string', 'title': 'Description', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, 'ErrorDetail': {'type': 'object', 'title': 'ErrorDetail', 'required': ['code', 'message', 'retryable', 'next_action'], 'properties': {'code': {'enum': ['invalid_request', 'invalid_address', 'invalid_answer', 'not_found', 'expired', 'offer_changed', 'offer_unavailable', 'validation_required', 'confirmation_required', 'idempotency_conflict', 'duplicate_order', 'rate_limited', 'temporarily_unavailable'], 'type': 'string', 'title': 'Code'}, 'message': {'type': 'string', 'title': 'Message', 'maxLength': 500, 'minLength': 1}, 'retryable': {'type': 'boolean', 'title': 'Retryable'}, 'next_action': {'type': 'string', 'title': 'Next Action', 'maxLength': 500, 'minLength': 1}, 'field_errors': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'string'}}, {'type': 'null'}], 'title': 'Field Errors', 'default': None}, 'correlation_id': {'anyOf': [{'type': 'string', 'maxLength': 128}, {'type': 'null'}], 'title': 'Correlation Id', 'default': None}, 'retry_after_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'minimum': 1}, {'type': 'null'}], 'title': 'Retry After Seconds', 'default': None}}, 'additionalProperties': False}, 'OrderAmount': {'type': 'object', 'title': 'OrderAmount', 'required': ['amount_cents', 'amount_currency'], 'properties': {'amount_cents': {'type': 'integer', 'title': 'Amount Cents', 'minimum': 0}, 'amount_currency': {'type': 'string', 'title': 'Amount Currency', 'pattern': '^[A-Z]{3}$'}}, 'additionalProperties': False}, 'ContractTerms': {'type': 'object', 'title': 'ContractTerms', 'properties': {'months': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Months', 'default': None}, 'required': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Required', 'default': None}}, 'additionalProperties': False}, 'ReviewAddress': {'type': 'object', 'title': 'ReviewAddress', 'required': ['display'], 'properties': {'unit': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Unit', 'default': None}, 'display': {'type': 'string', 'title': 'Display', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'PreferredDates': {'type': 'object', 'title': 'PreferredDates', 'properties': {'first': {'anyOf': [{'$ref': '#/$defs/InstallationChoice'}, {'type': 'null'}], 'default': None}, 'second': {'anyOf': [{'$ref': '#/$defs/InstallationChoice'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}, 'EquipmentOption': {'type': 'object', 'title': 'EquipmentOption', 'required': ['option_id', 'name', 'selection_type', 'included', 'unit_pricing', 'max_quantity', 'selected_quantity'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'included': {'type': 'boolean', 'title': 'Included'}, 'option_id': {'type': 'string', 'title': 'Option Id', 'maxLength': 256, 'minLength': 1}, 'max_quantity': {'type': 'integer', 'title': 'Max Quantity', 'minimum': 1}, 'unit_pricing': {'$ref': '#/$defs/OrderAmount'}, 'selection_type': {'enum': ['radio', 'checkbox'], 'type': 'string', 'title': 'Selection Type'}, 'selected_quantity': {'type': 'integer', 'title': 'Selected Quantity', 'minimum': 0}}, 'additionalProperties': False}, 'IncludedProduct': {'type': 'object', 'title': 'IncludedProduct', 'required': ['name', 'quantity', 'unit_pricing', 'total_pricing'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 300, 'minLength': 1}, 'quantity': {'type': 'integer', 'title': 'Quantity', 'minimum': 1}, 'unit_pricing': {'$ref': '#/$defs/OrderAmount'}, 'total_pricing': {'$ref': '#/$defs/OrderAmount'}}, 'additionalProperties': False}, 'IncludedProducts': {'type': 'object', 'title': 'IncludedProducts', 'properties': {'internet': {'type': 'array', 'items': {'$ref': '#/$defs/IncludedProduct'}, 'title': 'Internet', 'maxItems': 100}, 'television': {'type': 'array', 'items': {'$ref': '#/$defs/IncludedProduct'}, 'title': 'Television', 'maxItems': 100}, 'television_add_ons': {'type': 'array', 'items': {'$ref': '#/$defs/IncludedProduct'}, 'title': 'Television Add Ons', 'maxItems': 100}}, 'additionalProperties': False}, 'ReadyOrderReview': {'type': 'object', 'title': 'ReadyOrderReview', 'required': ['provider_name', 'selected_offer', 'included_products', 'one_time_fees', 'total_amount', 'service_address', 'unknown_charges_remain_unknown'], 'properties': {'consents': {'type': 'object', 'title': 'Consents', 'additionalProperties': {'type': 'boolean'}}, 'installation': {'anyOf': [{'$ref': '#/$defs/InstallationDetails'}, {'type': 'null'}], 'default': None}, 'total_amount': {'$ref': '#/$defs/OrderAmount'}, 'one_time_fees': {'type': 'array', 'items': {'$ref': '#/$defs/OneTimeFee'}, 'title': 'One Time Fees', 'maxItems': 100}, 'provider_name': {'type': 'string', 'title': 'Provider Name', 'maxLength': 300, 'minLength': 1}, 'selected_offer': {'$ref': '#/$defs/PlanFacts'}, 'bundle_discount': {'anyOf': [{'$ref': '#/$defs/OrderAmount'}, {'type': 'null'}], 'default': None}, 'service_address': {'$ref': '#/$defs/ReviewAddress'}, 'included_products': {'$ref': '#/$defs/IncludedProducts'}, 'billing_preferences': {'anyOf': [{'$ref': '#/$defs/BillingPreferences'}, {'type': 'null'}], 'default': None}, 'unknown_charges_remain_unknown': {'type': 'boolean', 'const': True, 'title': 'Unknown Charges Remain Unknown'}}, 'additionalProperties': False}, 'BillingPreferences': {'type': 'object', 'title': 'BillingPreferences', 'properties': {'auto_pay': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Auto Pay', 'default': None}, 'paperless_billing': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Paperless Billing', 'default': None}}, 'additionalProperties': False}, 'InstallationChoice': {'type': 'object', 'title': 'InstallationChoice', 'properties': {'date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Date', 'default': None}, 'time_window': {'anyOf': [{'enum': ['8:00 AM - 12:00 PM (Local Time)', '12:00 PM - 5:00 PM (Local Time)'], 'type': 'string'}, {'type': 'null'}], 'title': 'Time Window', 'default': None}}, 'additionalProperties': False}, 'OfferChangedReview': {'type': 'object', 'title': 'OfferChangedReview', 'required': ['previous_offer', 'current_offer', 'changed_fields'], 'properties': {'current_cart': {'anyOf': [{'$ref': '#/$defs/CartReview'}, {'type': 'null'}], 'default': None}, 'current_offer': {'$ref': '#/$defs/PlanFacts'}, 'previous_cart': {'anyOf': [{'$ref': '#/$defs/CartReview'}, {'type': 'null'}], 'default': None}, 'changed_fields': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Changed Fields', 'maxItems': 100, 'minItems': 1}, 'previous_offer': {'$ref': '#/$defs/PlanFacts'}}, 'additionalProperties': False}, 'InstallationDetails': {'type': 'object', 'title': 'InstallationDetails', 'properties': {'type': {'anyOf': [{'enum': ['self', 'professional'], 'type': 'string'}, {'type': 'null'}], 'title': 'Type', 'default': None}, 'preferred_dates': {'anyOf': [{'$ref': '#/$defs/PreferredDates'}, {'type': 'null'}], 'default': None}, 'desired_service_start_date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Desired Service Start Date', 'default': None}}, 'additionalProperties': False}}, 'title': 'ValidationEnvelope', 'required': ['schema_version', 'status'], 'properties': {'error': {'anyOf': [{'$ref': '#/$defs/ErrorDetail'}, {'type': 'null'}], 'default': None}, 'review': {'anyOf': [{'$ref': '#/$defs/ReadyOrderReview'}, {'$ref': '#/$defs/OfferChangedReview'}, {'type': 'null'}], 'title': 'Review', 'default': None}, 'status': {'enum': ['checking', 'needs_information', 'ready', 'offer_changed', 'unavailable', 'expired', 'failed', 'error'], 'type': 'string', 'title': 'Status'}, 'revision': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Revision', 'default': None}, 'expires_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Expires At', 'default': None}, 'terms_hash': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'title': 'Terms Hash', 'default': None}, 'checkout_id': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'title': 'Checkout Id', 'default': None}, 'next_action': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'title': 'Next Action', 'default': None}, 'field_errors': {'type': 'object', 'title': 'Field Errors', 'additionalProperties': {'type': 'string'}}, 'schema_version': {'type': 'integer', 'const': 4, 'title': 'Schema Version'}, 'required_fields': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Required Fields', 'maxItems': 100}, 'validation_token': {'anyOf': [{'type': 'string', 'maxLength': 512}, {'type': 'null'}], 'title': 'Validation Token', 'default': None}, 'equipment_options': {'type': 'array', 'items': {'$ref': '#/$defs/EquipmentOption'}, 'title': 'Equipment Options', 'maxItems': 100}, 'retry_after_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'minimum': 1}, {'type': 'null'}], 'title': 'Retry After Seconds', 'default': None}}, 'additionalProperties': False}
已更改
validate_order
2026年9月25日 03:02
已添加
get_order
2026年9月23日 02:53
已添加
create_order
2026年9月23日 02:53
已添加
validate_order
2026年9月23日 02:53
已更改
check_availability
2026年9月23日 02:53
已添加
check_availability
2026年9月17日 12:35