Update an offering
Strict-partial update. attributes is shallow-MERGED into the existing JSONB; within the merge, a null attribute value DELETES that key. Soft-deleted offerings return 404 (mirrors the GET surface’s exclusion). No webhook events emitted today (canonical event union does not yet include offering.*).
Authorizations
Tenant-issued API key. Format: vapk_live_<48 hex chars> (60 chars total). Issue + manage at /settings/integrations/api-keys in the Vorel dashboard. Each key has a scope set (read, leads:write, appointments:write, offerings:write); endpoints requiring a write scope reject keys without it with a 403 envelope.
Path Parameters
UUID of the offering to update.
Body
Partial-update body for PATCH /api/v1/offerings/{id}. Must include at least one updatable field. Setting a nullable field to null clears it. attributes is shallow-MERGED into the existing JSONB; within the merge, a null attribute value DELETES that key. Soft-deleted offerings return 404 (mirrors the GET surface's exclusion). assigned_user_id, deleted_at, and metadata are NOT updatable. No webhook events are emitted (the canonical event union does not yet include offering.*).
1201201 - 5005001000010000x >= 0^[A-Z]{3}$50020204840^\d{4}-\d{2}-\d{2}$Response
Offering updated.
Decimal serialized as string to preserve precision for large values that lose accuracy as JS numbers. Caller can parseFloat() if they don't need the precision.
ISO 4217 (e.g. AED, USD).
3Vertical-specific JSONB (real estate: bedrooms/area/etc.; salon: service_type/duration_minutes/etc.).
YYYY-MM-DD, no time component.