Skip to content

Set variant pricing schedule

PUT
/offerings/{offering_id}/variants/{variant_id}/pricing-schedule
curl --request PUT \
--url https://quikstik-core.fly.dev/offerings/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/variants/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/pricing-schedule \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \
--data '{ "rules": [ { "effective_start": "2026-04-15", "effective_end": "2026-04-15", "demand_class": "example", "unit_net_minor": 1, "currency": "USD", "tax_class": "taxable" } ], "schedule": { "kind": "daily_at", "tz": "example", "start_times": [ { "hour": 1, "minute": 1 } ] } }'

Operator-scoped, authoritative provisioning of a variant’s price book (rate rules) and availability recurrence. Resolves against operator effect authority; this is not a customer surface. Replaces the variant’s rate rules, recurrence, and start-times wholesale. A malformed schedule (empty/overlapping rules, inverted range, empty fixed schedule, unknown timezone, or invalid clock time) is rejected before any write.

offering_id
required
string format: uuid
variant_id
required
string format: uuid
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
rules
required

Rate rules forming the price book (non-empty; non-overlapping within a lane).

Array<object>
>= 1 items
object
effective_start

Inclusive start of the effective range (omit/null = unbounded below).

string format: date
nullable
effective_end

Inclusive end of the effective range (omit/null = unbounded above).

string format: date
nullable
demand_class

Demand lane label; omit/null for the default lane.

string
nullable
unit_net_minor
required

Tax-exclusive unit net in integer minor units.

integer format: int64
currency
required
string
Allowed values: USD
tax_class
required
string
Allowed values: taxable exempt
schedule
required
One of: discriminator: kind
object
kind
required
string
Allowed values: daily_at
tz
required

IANA timezone id (e.g. “America/New_York”). Resolvability is enforced server-side.

string
start_times
required

At least one local start-time.

Array<object>
>= 1 items
object
hour
required
integer
<= 23
minute
required
integer
<= 59

Pricing schedule applied

Malformed pricing schedule (empty/overlapping rules, inverted range, empty fixed schedule, unknown timezone, or invalid clock time)