# Quote update This operation updates the details of a specific quote within a document by specifying the document ID and quote ID. See the [Update quotes](https://developers.pandadoc.com/docs/update-quotes) tutorial for detailed usage and caveats. # OpenAPI definition ```json { "openapi": "3.0.3", "info": { "title": "PandaDoc Public API", "description": "PandaDoc API spans a broad range of functionality to help you build incredible documents automation experiences inside your product.\n\nPandaDoc API is organized around REST. Our API has predictable resource-oriented URLs and uses standard HTTP response codes, authentication, and verbs.\n\n## Getting started\n\nYou can start testing PandaDoc API with a sandbox key on our [Enterprise](https://www.pandadoc.com/pricing/) plan, either active or in trial.\n\nGenerate your [sandbox key](https://developers.pandadoc.com/reference/sandbox-key) on the Developer Dashboard with predefined [rate limits](https://developers.pandadoc.com/reference/limits). Or contact our solutions expert if you work with high-transaction volumes.\n\n## Guides\n\nIf you’re just getting started with PandaDoc, you may want to jump straight into one of our [getting started guides](https://developers.pandadoc.com/docs/getting-started) for the feature you’re most interested in, whether that’s:\n\n- [Create from template](https://developers.pandadoc.com/docs/create-send-document),\n- [Upload and send a local PDF](https://developers.pandadoc.com/docs/upload-and-send-a-local-pdf),\n- or [Listening for changes in document status](https://developers.pandadoc.com/docs/listen-document-status-changes).\n\nWe also recommend you to discover our dynamic content generation on a fly: [Create from a template with content placeholder](https://developers.pandadoc.com/docs/create-with-content-placeholders-from-template).\n", "termsOfService": "https://www.pandadoc.com/master-services-agreement/", "contact": { "name": "PandaDoc API Support", "url": "https://developers.pandadoc.com/", "email": "api-track@pandadoc.com" }, "license": { "name": "MIT", "url": "https://github.com/PandaDoc/pandadoc-openapi-specification/blob/main/LICENSE" }, "version": "7.18.2" }, "servers": [ { "url": "https://api.pandadoc.com", "description": "Public API" } ], "security": [ { "apiKey": [] }, { "oauth2": [] } ], "tags": [ { "name": "Quotes", "description": "Operations for updating and managing quotes within documents." } ], "paths": { "/public/v1/documents/{document_id}/quotes/{quote_id}": { "put": { "tags": [ "Quotes" ], "summary": "Quote update", "description": "This operation updates the details of a specific quote within a document by specifying the document ID and quote ID.", "operationId": "quoteUpdate", "parameters": [ { "name": "document_id", "description": "Document ID", "in": "path", "schema": { "type": "string" }, "required": true, "example": "BhVzRcxH9Z2LgfPPGXFUBa" }, { "name": "quote_id", "description": "Quote ID", "in": "path", "schema": { "type": "string" }, "required": true, "example": "99aaa4f9-3250-4f5b-a953-6d7bfc5d8c9e" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/QuoteUpdateRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/QuoteResponse" } } } }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } } } } }, "components": { "securitySchemes": { "apiKey": { "type": "apiKey", "name": "Authorization", "in": "header", "description": "The `Authorization` header must contain the API key. The value should be prefixed with `API-Key` followed by a space and the actual API key.\n", "x-default": "API-Key 3039ba033eb1410caa0a2227158d63c9d6502cd8" }, "oauth2": { "type": "oauth2", "flows": { "authorizationCode": { "authorizationUrl": "https://app.pandadoc.com/oauth2/authorize", "tokenUrl": "https://api.pandadoc.com/oauth2/access_token", "refreshUrl": "https://api.pandadoc.com/oauth2/access_token", "scopes": { "read+write": "Use `read+write` to create, send, delete, and download documents, and `read` to view templates and document details." } } }, "description": "Send the authenticating user to the PandaDoc OAuth2 request URL. We recommend a button or a link titled\n\"Connect to PandaDoc\" if you are connecting users from a custom application. Users will see the \"Authorize Application\" screen.\nWhen the user clicks \"Authorize\", PandaDoc redirects the user back to your site with an authorization code inside the URL.\n\nhttps://app.pandadoc.com/oauth2/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope=read+write&response_type=code\n\n`client_id` and `redirect_uri` values should match your application settings.\n" } }, "schemas": { "QuoteSectionSettings": { "type": "object", "properties": { "optional": { "type": "boolean" }, "selected": { "type": "boolean" }, "selection_type": { "type": "string", "enum": [ "custom", "single", "multiple" ] } } }, "QuoteResponse": { "type": "object", "properties": { "id": { "type": "string", "example": "4b011d86-286b-4f86-b697-90a6ad3f1489" }, "currency": { "type": "string", "example": "USD" }, "total": { "type": "string", "example": "900" }, "summary": { "type": "object", "title": "QuoteResponseSummary", "properties": { "total": { "type": "string", "example": "900" }, "subtotal": { "type": "string", "example": "1000", "nullable": true }, "one_time_subtotal": { "type": "string", "example": "500", "nullable": true }, "recurring_subtotal": { "type": "array", "items": { "type": "object", "properties": { "billing_cycle": { "type": "string", "example": "monthly" }, "value": { "type": "string", "example": "500" } } }, "nullable": true }, "total_qty": { "type": "string", "nullable": true }, "discounts": { "type": "object", "nullable": true, "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "nullable": true }, "value": { "type": "string", "nullable": true } } } }, "taxes": { "type": "object", "nullable": true }, "fees": { "type": "object", "nullable": true }, "custom_fields": { "type": "object", "nullable": true, "additionalProperties": { "type": "string" } }, "total_discount": { "type": "string", "example": "100", "nullable": true }, "total_tax": { "type": "string", "nullable": true }, "total_fee": { "type": "string", "nullable": true }, "total_savings": { "type": "string", "nullable": true }, "total_contract_value": { "type": "string", "example": "1900", "nullable": true } } }, "sections": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "summary": { "type": "object", "title": "QuoteResponseSectionSummary", "properties": { "total": { "type": "string", "example": "1000" }, "subtotal": { "type": "string", "example": "1000", "nullable": true }, "one_time_subtotal": { "type": "string", "example": "500", "nullable": true }, "recurring_subtotal": { "type": "array", "items": { "type": "object", "properties": { "billing_cycle": { "type": "string", "example": "monthly" }, "value": { "type": "string", "example": "500" } } }, "nullable": true }, "total_qty": { "type": "string", "nullable": true }, "discounts": { "type": "object", "nullable": true }, "taxes": { "type": "object", "nullable": true }, "fees": { "type": "object", "nullable": true }, "custom_fields": { "type": "object", "nullable": true, "additionalProperties": { "type": "string" } }, "total_section_value": { "type": "string", "example": "1900", "nullable": true } } }, "columns": { "type": "array", "items": { "type": "object", "title": "QuoteResponseSectionColumn", "properties": { "header": { "type": "string", "nullable": true }, "name": { "type": "string" }, "merge_name": { "type": "string", "nullable": true }, "hidden": { "type": "string" } } } }, "items": { "type": "array", "items": { "type": "object", "title": "QuoteResponseSectionItem", "properties": { "id": { "type": "string", "nullable": true }, "sku": { "type": "string", "nullable": true }, "name": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "qty": { "type": "string", "nullable": true, "example": "1" }, "price": { "type": "string", "nullable": true, "example": "500" }, "cost": { "type": "string", "nullable": true }, "billing_frequency": { "type": "string", "nullable": true }, "contract_term": { "type": "string", "nullable": true }, "pricing_method": { "type": "string", "nullable": true }, "type": { "type": "string", "nullable": true }, "reference_type": { "type": "string", "nullable": true }, "options": { "type": "object", "nullable": true, "properties": { "selected": { "type": "boolean", "nullable": true }, "qty_editable": { "type": "boolean", "nullable": true } } }, "custom_columns": { "type": "object", "nullable": true, "additionalProperties": { "type": "string" } }, "external_columns": { "type": "object", "nullable": false, "additionalProperties": { "type": "string" } }, "discounts": { "type": "object", "nullable": true, "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "nullable": true }, "value": { "type": "string", "nullable": true } } } }, "taxes": { "type": "object", "nullable": true, "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "nullable": true }, "value": { "type": "string", "nullable": true } } } }, "fees": { "type": "object", "nullable": true, "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "nullable": true }, "value": { "type": "string", "nullable": true } } } }, "multipliers": { "type": "object", "nullable": true, "additionalProperties": { "type": "string" } }, "total": { "type": "string", "nullable": true }, "overall_total": { "type": "string", "example": "1000", "nullable": true } } }, "nullable": true }, "total": { "type": "string", "example": "1000" }, "settings": { "$ref": "#/components/schemas/QuoteSectionSettings" } }, "nullable": true } }, "merge_rules": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "enabled": { "type": "boolean" }, "action": { "type": "object", "properties": { "type": { "type": "string" }, "section_id": { "type": "string" } } }, "condition": { "type": "object", "properties": { "field_name": { "type": "string" }, "type": { "type": "string" }, "comparison": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "value": { "type": "string" } } } } } } } } }, "settings": { "type": "object", "properties": { "selection_type": { "type": "string", "enum": [ "custom", "single", "multiple" ] } } } } }, "QuoteUpdateRequestDiscountTypeEnum": { "type": "string", "enum": [ "percent", "flat" ] }, "QuoteUpdateRequestSummary": { "type": "object", "description": "Summary settings containing adjustments (discounts, fees, taxes) and custom columns that apply to the entire quote / section total.", "properties": { "custom_columns": { "type": "object", "nullable": false, "additionalProperties": { "type": "string" } }, "discounts": { "type": "object", "nullable": false, "description": "Summary level discounts.", "additionalProperties": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/QuoteUpdateRequestDiscountTypeEnum" }, "value": { "type": "number", "nullable": false } } } }, "fees": { "type": "object", "nullable": false, "description": "Summary level fees.", "additionalProperties": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/QuoteUpdateRequestDiscountTypeEnum" }, "value": { "type": "number", "nullable": false } } } }, "taxes": { "type": "object", "nullable": false, "description": "Summary level taxes.", "additionalProperties": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/QuoteUpdateRequestDiscountTypeEnum" }, "value": { "type": "number", "nullable": false } } } } } }, "QuoteUpdateRequestBillingFrequencyEnum": { "type": "string", "nullable": true, "enum": [ "weekly", "monthly", "annually", "quarterly", "semiannualy" ] }, "QuoteUpdateRequestSettingsSelectionTypeTypeEnum": { "type": "string", "enum": [ "custom", "single", "multiple" ] }, "QuoteUpdateRequest": { "type": "object", "properties": { "currency": { "type": "string", "description": "Currency code (ISO 4217)", "example": "USD" }, "summary": { "$ref": "#/components/schemas/QuoteUpdateRequestSummary" }, "sections": { "type": "array", "description": "Quote sections - this property overrides existing sections in the specified order. If you want to change only one section, you must still pass other sections IDs. Otherwise these sections will be removed.", "items": { "type": "object", "title": "UpdateIntegrationQuoteSection", "properties": { "id": { "type": "string", "format": "uuid", "nullable": false, "description": "Section ID to update. Invalid (or missing) ID causes creating a new section." }, "name": { "type": "string", "nullable": true, "description": "Name of the quotes section. If you create a section without providing a value, it will have the default value.", "default": "Section name" }, "summary": { "$ref": "#/components/schemas/QuoteUpdateRequestSummary" }, "items": { "type": "array", "description": "Section items - this property overrides the existing items in the order specified. If you want to change only one item, you must still pass other items IDs. Otherwise these items will be removed.", "items": { "type": "object", "title": "UpdateIntegrationQuoteSectionItem", "properties": { "id": { "type": "string", "format": "uuid", "nullable": false, "description": "Item ID to update. Invalid (or missing) ID causes creating a new item." }, "sku": { "type": "string", "nullable": false, "description": "Product SKU. If you create an item without providing a value, it will have the default value.", "default": "#" }, "name": { "type": "string", "nullable": false, "description": "Item name. If you create an item without providing a value, it will have the default value.", "default": "" }, "description": { "type": "string", "nullable": false, "description": "Item description. If you create an item without providing a value, it will have the default value.", "default": "" }, "qty": { "type": "integer", "nullable": false, "description": "Item QTY. If you create an item without providing a value, it will have the default value.", "default": 1, "example": 10 }, "price": { "type": "number", "nullable": false, "description": "Item price. If you create an item without providing a value, it will have the default value. If `price_settings` is passed, this value may change after the quote is updated.", "default": 0, "example": 42.42 }, "price_settings": { "type": "object", "nullable": false, "description": "Price settings if the price is not flat rate. If it is null, the price is flat rate.", "properties": { "base_value": { "type": "number", "description": "Base value for volume discount pricing. If set, tiers are treated like percentage of discount on this value. If not set, tiers are treated like a flat value discount of chosen currency.", "nullable": true }, "tiers": { "type": "array", "items": { "type": "object", "properties": { "min_qty": { "type": "integer", "nullable": false }, "value": { "type": "number", "nullable": false } }, "required": [ "value", "min_qty" ] }, "minLength": 1 } }, "required": [ "base_value", "tiers" ] }, "cost": { "type": "number", "nullable": false, "description": "Item cost. If you create an item without providing a value, it will have the default value.", "example": 42.42 }, "billing_frequency": { "$ref": "#/components/schemas/QuoteUpdateRequestBillingFrequencyEnum" }, "contract_term": { "type": "integer", "nullable": true, "description": "Contract term. Measured in units set in the `billing_frequency` parameter." }, "reference_id": { "type": "string", "nullable": true, "description": "Use this field to pass an id that references this item in external systems." }, "options": { "type": "object", "nullable": false, "description": "Denotes whether an item is selected, optional, and has editable quantity.", "properties": { "selected": { "type": "boolean", "nullable": false, "default": true }, "qty_editable": { "type": "boolean", "nullable": false, "default": true }, "optional": { "type": "boolean", "nullable": false, "default": false } }, "required": [ "qty_editable" ] }, "custom_columns": { "type": "object", "nullable": false, "additionalProperties": { "type": "string" } }, "external_columns": { "type": "object", "nullable": false, "additionalProperties": { "type": "string" } }, "text_columns": { "type": "object", "nullable": false, "additionalProperties": { "type": "string" } }, "discounts": { "type": "object", "nullable": false, "description": "Item discounts.", "additionalProperties": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/QuoteUpdateRequestDiscountTypeEnum" }, "value": { "type": "number", "nullable": false } } } }, "taxes": { "type": "object", "nullable": false, "description": "Item taxes.", "additionalProperties": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/QuoteUpdateRequestDiscountTypeEnum" }, "value": { "type": "number", "nullable": false } } } }, "fees": { "type": "object", "nullable": false, "description": "Item fees.", "additionalProperties": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/QuoteUpdateRequestDiscountTypeEnum" }, "value": { "type": "number", "nullable": false } } } }, "multipliers": { "description": "Item multipliers.", "type": "object", "nullable": false, "additionalProperties": { "type": "number" } } } }, "nullable": false }, "settings": { "type": "object", "description": "Section settings. Denotes whether a section is optional or selected, and selection type inside the section - single, multiple, or custom.", "properties": { "optional": { "type": "boolean", "nullable": false }, "selected": { "type": "boolean", "nullable": false }, "selection_type": { "$ref": "#/components/schemas/QuoteUpdateRequestSettingsSelectionTypeTypeEnum" } }, "nullable": false } } } }, "settings": { "type": "object", "description": "Quote settings. Denotes whether a quote is optional or selected, and selection type inside the section - single, multiple, or custom.", "properties": { "selection_type": { "$ref": "#/components/schemas/QuoteUpdateRequestSettingsSelectionTypeTypeEnum" } }, "nullable": false } } } }, "responses": { "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "authentication_error" }, "detail": { "type": "string", "example": "Authentication credentials were not provided." } } } } } }, "403": { "description": "Permission error", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "permission_error" }, "detail": { "type": "string", "example": "You do not have permission to perform this action." }, "info_message": { "type": "string", "description": "Human-readable explanation of the permission error.", "example": "You are not allowed to send documents outside of your organization" }, "links": { "type": "array", "description": "Optional links related to the error (e.g. a status endpoint).", "items": { "type": "object", "properties": { "rel": { "type": "string", "example": "status" }, "href": { "type": "string", "example": "https://api.pandadoc.com/public/v1/documents/RsXrKarV524iCpjci9CMGa" }, "type": { "type": "string", "example": "POST" } } } } } } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "request_error" }, "detail": { "type": "string", "example": "Not found" } } } } } }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "example": "mXpGsEBHdSFW97zKXq75hm" }, "status": { "type": "string", "example": "document.uploaded" }, "info_message": { "type": "string", "example": "Warning - Document status document.uploaded doesn’t mean that the document already exists - processing happens asynchronously. Please follow the documentation section https://developers.pandadoc.com/reference/new-document" } } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "throttled" }, "detail": { "type": "string", "example": "Request was throttled." } } } } } } } } } ```