Ordering and recovery
Hum separates preparation, authorization, submission, and retrieval. Keep those boundaries visible to the user and in client logic.Validate without committing
Startvalidate_order with the lookup and exact executable offer returned by availability. Hum
creates a draft, refreshes the selected offer, and returns either the next requirement or a review.
Validation creates no order and sends no fulfillment request.
Continue with checkout_id. required_fields defines the checkout contract and can include fields
already filled. field_errors identifies the actual missing or invalid values; its paths are
relative to details. Reuse customer facts already supplied, ask only for what is still needed,
and send changes with the current expected_revision. Place customer, installation,
consents, and internet_addons inside details, never at the tool root.
While validation is checking, wait at least retry_after_seconds and poll with only
checkout_id. Resending an edit increments the revision and restarts validation. If a revision is
stale, retrieve the checkout, wait if it is still checking, then edit at the returned revision.
Starting again with the same lookup and offer returns the existing draft.
Do not ask for card data, Social Security numbers, existing-account credentials, or payment
authorization. Hum may request customer identity and contact fields, a mailing address, billing
preferences, installation preferences, provider consents, a four-digit service PIN, or date of
birth when the selected provider requires them. The returned field paths are authoritative.
Build and revalidate the cart
Validation can returnequipment_options before the draft is ready. Present each option’s name,
price, included status, selection type, current quantity, and quantity limit. Send the complete
selection in details.internet_addons using only returned option IDs and positive integer
quantities.
- Omit
internet_addonsto retain the current selection or initial defaults. - Send
[]to decline optional equipment. - Select at most one option marked
radio. - When a dependent option appears after selecting its parent, retain the parent in the next complete selection.
- Never send client-supplied prices, SKUs, or equipment references.
offer_changed with the
previous and current carts. Present the change and obtain a fresh decision. Any cart edit or
revalidation change invalidates an earlier confirmation.
Handle validation states
Present the exact review
When validation isready, first compare the cart with the customer’s budget, minimum speed,
equipment ownership, billing, and installation choices. ready means technical validity, not that
the cart meets those choices. Resolve any mismatch before seeking authorization. Show the returned
review rather than rebuilding terms from an earlier availability response. Include every returned:
- provider and plan fact
- monthly price, regular price, and promotion period
- included product and equipment line item
- one-time and recurring fee
- total amount and returned bundle discount
- contract and data-limit condition
- installation choice and preferred timing
- billing preference and consent
- unknown or unavailable fact
Obtain authorization
The host owns its authorization interface. Authorization must cover the current review and its exactterms_hash. General intent to shop, an approval for an older revision, silence, or an
approval for different terms does not authorize submission.
Do not call create_order when the host cannot obtain this authorization.
Submit once
Callcreate_order with the ready checkout, its validation token, the matching terms hash,
confirmed: true, and a stable idempotency key. The key identifies this exact intended order. Keep
it stable for an identical replay; never reuse it for another checkout, person, offer, or review.
Hum records the authorized order locally before asynchronous fulfillment. A normal create response
can arrive before fulfillment completes.
queued means the local record is durable and submission is queued. It does not mean the ISP
accepted the customer or that installation is scheduled.
Recover a lost response
Useget_order with the same checkout_id after a normal submission and whenever the create call
times out, disconnects, returns a transport error, or loses its response.
An error marked retryable does not override this rule. Retrieval comes first whenever a create call
might have crossed the submission boundary.
Fulfillment states
These states report evidence in Hum’s fulfillment path:
Do not translate these into the generic states used by Hum’s partner analytics or widget. The MCP
does not track provider installation, final ISP acceptance, account activation, payment,
cancellation, or modification.
Support escalation
When the result directs you to support, include:- the safe correlation ID
- the displayable order reference, if one exists
- the status and last checked time
- the client name and version
