Skip to main content

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 a product_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.
The response includes every child hydrated inline:

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

Include Idempotency-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 exact param path so you know which field in which child failed:
Transactional rollback: if any child write fails, no rows are written. The response always reflects the full success or full failure state.

Adding pricing tiers to an existing product

Use POST /v1/products/{id}/pricing to add tiers incrementally after creation: