Skip to content

Provision an offering and its variants

POST
/offerings
curl --request POST \
--url https://quikstik-core.fly.dev/offerings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \
--data '{ "offering_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "catalog_product_id": "example", "canonical_name": "example", "slug": "example", "variants": [ { "variant_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "display_name": "example", "units": "example", "duration_minutes": 1, "meeting_point_name": "example", "meeting_point_address": "example", "capacity": 1 } ] }'

Operator-scoped, command-mediated provisioning of an offering and its variants into the durable catalog. Persisting catalog identity durably is the hardened posture: bookings, capacity, departures, and money bind to persisted variant rows, not to a transient in-memory reference. Creates or replaces by identity (idempotent).

x-tenant-id
required
string format: uuid

Tenant identifier (UUID).

Authn/authz semantics are intentionally TBD for this contract slice; this header exists to keep the contract explicitly multi-tenant from day 0.

Media typeapplication/json
object
offering_id
required
string format: uuid
catalog_product_id
required
string
>= 1 characters
canonical_name
required
string
>= 1 characters
slug
required
string
>= 1 characters
variants
required
Array<object>
>= 1 items
object
variant_id
required
string format: uuid
display_name
required
string
>= 1 characters
units
string
duration_minutes
integer
<= 4294967295
meeting_point_name
string
meeting_point_address
string
capacity
integer
<= 4294967295

Example generated

{
"offering_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"catalog_product_id": "example",
"canonical_name": "example",
"slug": "example",
"variants": [
{
"variant_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"display_name": "example",
"units": "example",
"duration_minutes": 1,
"meeting_point_name": "example",
"meeting_point_address": "example",
"capacity": 1
}
]
}

Offering provisioned

Malformed (empty field, no variants, empty variant name, or duplicate variant id)