Partially update quote version fields with optional bulk line item operations (PATCH semantics)
Documentation Index
Fetch the complete documentation index at: https://docs2.zenskar.com/llms.txt
Use this file to discover all available pages before exploring further.
Request schema for partially updating a quote version (PATCH semantics)
Supports consolidated updates to both version fields AND line items in a single request. Only fields provided in the request will be updated. Uses exclude_unset=True in service layer to apply partial updates.
Example - Version fields only: { "name": "Updated Quote Name", "discounts": [{"type": "percentage", "value": 10}] }
Example - Version fields + line items (consolidated with smart union): { "name": "Updated Quote Name", "line_items": [ { "id": "existing-uuid", "quantity": [{"value": 200, "effective_from": "2025-01-01"}] }, // UPDATE (has id, no delete) { "product_id": "new-product-uuid", "pricing_id": "pricing-uuid" }, // CREATE (has product_id, no id) { "id": "delete-uuid", "delete": true } // DELETE (has id + delete: true) ] }
State Constraints: - Editable in DRAFT status (both modes) - Editable in PENDING_APPROVAL (approval-based mode only) - Not editable in SENT, ACCEPTED, or later states
Quote name/title
1 - 255Detailed quote description
ISO 4217 currency code (e.g., USD, EUR, GBP)
3Service/subscription start date
Service/subscription end date (optional)
Quote validity start date
Quote validity end date (optional)
Quote-level discounts (supplements line item discounts)
Quote-level taxes (supplements line item taxes)
Custom data for this quote version
Version-specific metadata (estimate timestamps, etc.)
Line item operations (create/update/delete) - optional for consolidated updates. When provided, all line item changes are applied atomically with version updates. Auto-discriminated by field presence: product_id=CREATE, id+delete=DELETE, id=UPDATE.
Operation schema for deleting a line item
Auto-discriminated by: id present, delete=True
Required fields:
Note: strict=True was disabled to allow automatic UUID string conversion from JSON. JSON payloads always send UUIDs as strings, and Pydantic's strict mode prevented the automatic conversion, causing validation errors.
Example: { "id": "line-item-uuid", "delete": true }
Successful Response
Response schema for quote (with current version)
Quote ID
Human-readable quote number
Quote workflow mode
approval-based, self-serve Organisation ID
Customer ID
Business entity ID
Created at
Updated at
Current version ID
Current/active version details
Custom data
Creator user ID