create_order
Set up an order for the key's organization through the same front door a website order takes (an INVREQ record the hourly adoption resolves into the CRM, indistinguishable downstream). This is the lock-in write behind both recap exits; it carries the recapRef and a required idempotencyKey (a retry with the same key and payload returns the original orderRef; the same key with a different payload is a conflict naming the differing fields). The 100-disc minimum is enforced here. Sizes other than the two built-ins return manual_exception. Returns the orderRef (the reference every later call uses), the exact quote, the chosen exit, and the next step. Failure modes: a recap whose inputs differ from the order is refused as a conflict naming the differing fields; a reused idempotencyKey with a different payload is a conflict naming the original order; a missing or mismatched contact email for the key is refused. Routing: start_order_intent is the earlier keyless contact capture, get_recap must run immediately before this call over the same inputs, and request_invoice follows it. Design approval stays human: a person approves the final proof by email before production. No tool on this server records or implies an approval. Payment stays human: this server moves no money itself. It returns a hosted invoice link and a person pays on Stripe's hosted page.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| exit | No | The person's chosen exit, recorded on the order and the invoice metadata. Both exits write the same record shape. | |
| note | No | Optional free-text note carried on the order for the team. | |
| size | Yes | 100mm-round or 100mm-square; anything else is a manual exception handled by hand through the Tap.Giving team. | |
| shipTo | Yes | The shipping address for the finished discs; every field is required. | |
| mounting | Yes | How the discs mount: adhesive backing, or pre-drilled screw holes plus adhesive. | |
| quantity | Yes | Discs in the order, 100 to 7000. | |
| recapRef | Yes | The reference get_recap returned for these same inputs; the order is refused if its inputs differ from that recap. | |
| artworkRef | No | The artwork reference submit_artwork returned for this order's design. | |
| contactName | Yes | The contact person's name for the order. | |
| contactEmail | Yes | Must belong to the key's organization. | |
| contactPhone | Yes | A phone number that reaches the contact. | |
| antiMetalCount | No | How many discs sit on metal surfaces and need the $1 shielding layer. Omit when unknown. | |
| idempotencyKey | Yes | 8 to 128 characters, minted per intended order, reused on retries. | |
| linkDestination | No | Any http or https URL; optional, changeable anytime; the Redirect Dashboard is the default. | |
| organizationName | No | Organization name; defaults to the key's organization name. |