The atomic-create principle
The Arcus Products API accepts the complete nested resource graph in a single POST. You express what you want; the API creates every child in one atomic transaction. If any child fails, the entire request rolls back — no orphan products, no partial state.product_type discriminator
Every product has aproduct_type that controls which children are valid:
Full example: variant parent with kit variants
A “Riser Kit” with two kit variants — Dome and Flat — each with their own component assemblies, three qty-break pricing tiers, and a vendor assignment. One POST call.Qty-break pricing with pricing_level_id
Each pricing[] element defines one row in a tiered price book:
All money fields (
list_price, sell_price, adjustment) are returned as JavaScript numbers (float), not strings.
Idempotency
IncludeIdempotency-Key: <your-unique-key> on every create call. Replaying the same key within 24 hours returns the original response without re-creating resources.
Standalone kit (no variants)
Error handling
Validation errors return the exactparam path so you know which field in which child failed:
Adding pricing tiers to an existing product
UsePOST /v1/products/{id}/pricing to add tiers incrementally after creation:

