> For the complete documentation index, see [llms.txt](https://help.paintscout.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.paintscout.com/developers/quotes.md).

# Quotes

## GET /quotes

> List Quotes

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteSearchResult":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","nullable":false,"description":"A unique ID for the Quote."},"number":{"type":"number","description":"The Number of the Quote"},"status":{"type":"string","description":"The status of this quote"},"hourlyRate":{"type":"number","description":"The Hourly Rate of the Quote"},"contactId":{"type":"string","deprecated":true,"description":"This field is deprecated. Use contact.id instead"},"contact":{"$ref":"#/components/schemas/Contact"},"billingContact":{"$ref":"#/components/schemas/Contact"},"dates":{"type":"object","additionalProperties":false,"description":"important dates about this quote","properties":{"quote":{"type":"number","description":"The date the quote was create"},"sent":{"type":"number","description":"The date the quote was most recently sent"},"viewed":{"type":"number","description":"The date the quote was most recently viewed"},"accepted":{"type":"number","description":"The date the quote was accepted"},"declined":{"type":"number","description":"The date the quote was declined"}}},"jobAddress":{"type":"object","additionalProperties":false,"description":"The Job Address/Identifier of this quote","properties":{"identifier":{"type":"string","description":"The free-form job identifier of this quote"},"address":{"type":"string","description":"The address component of the job address"},"city":{"type":"string","description":"The city component of the job address"},"state":{"type":"string","description":"The state component of the job address"},"zip":{"type":"string","description":"The zip code component of the job address"}}},"childInvoiceId":{"type":"string","description":"The unique ID of the invoice created from this quote if available"},"quoteType":{"type":"object","additionalProperties":false,"description":"The Quote Type of this quote","properties":{"id":{"type":"string","description":"The unique ID of the Quote Type"},"value":{"type":"string","deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","description":"The text used to describe this Quote Type"}}},"quoteTypeId":{"type":"string","deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"quoteTemplate":{"type":"object","additionalProperties":false,"description":"The Quote Template that was made to use this quote","properties":{"id":{"type":"string","description":"The unique ID of the Quote Template"},"value":{"type":"string","deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"label":{"type":"string","description":"The label of the Quote Template"}}},"quoteTemplateId":{"type":"string","deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"dealId":{"type":"string","description":"The unique ID of the deal associated with this quote"},"totalAdjustment":{"type":"object","additionalProperties":false,"description":"The manual total adjustment applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the adjustment. Omitted if the adjustment is not a percentage"},"total":{"type":"number","description":"The calculated amount of the adjustment of the sub-total"},"description":{"type":"string","description":"The description of the adjustment"}}},"discount":{"type":"object","additionalProperties":false,"description":"The discount applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the discount. Omitted if the discount is not a percentage"},"total":{"type":"number","description":"The calculated amount of the discount of the sub-total"},"description":{"type":"string","description":"The description of the discount"}}},"tax":{"type":"object","additionalProperties":false,"description":"The tax applied to the quote","properties":{"rate":{"type":"number","description":"The percentage rate of tax"},"total":{"type":"number","description":"The total amount of tax applied"},"description":{"type":"string","description":"The description of the tax"}}},"totals":{"type":"object","additionalProperties":false,"description":"The totals of the quote","properties":{"price":{"type":"number","description":"The sub-total price of the quote"},"laborPrice":{"type":"number","description":"The labor component of the sub-total"},"materialsPrice":{"type":"number","description":"The materials component of the sub-total"},"additionalWorkLaborPrice":{"type":"number","description":"The additional work labor component of the total"},"additionalWorkMaterialsPrice":{"type":"number","description":"The additional work materials component of the total"},"afterAdjustment":{"type":"number","description":"The price after sub-total adjustment of the quote"},"afterDiscount":{"type":"number","description":"The price after discount of the quote"},"afterTax":{"type":"number","description":"The after tax price of the quote"},"hours":{"type":"number","description":"The number of hours of the quote"}}},"source":{"$ref":"#/components/schemas/Source"},"owner":{"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"tags":{"type":"array","description":"Tags associated with this Quote","items":{"type":"string"}},"tagDetails":{"type":"array","description":"Detailed tag information associated with this Quote","items":{"$ref":"#/components/schemas/TagDetail"}}}},"Contact":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique ID of the Contact. Ignored when creating & updating contacts"},"firstName":{"type":"string","nullable":true,"description":"The First Name of the Contact."},"lastName":{"type":"string","nullable":true,"description":"The Last Name of the Contact"},"secondaryFirstName":{"type":"string","nullable":true,"description":"The secondary First Name of the Contact"},"secondaryLastName":{"type":"string","nullable":true,"description":"The secondary Last Name of the Contact"},"company":{"type":"string","nullable":true,"description":"The name of the Company this Contact is associated with"},"email":{"type":"string","nullable":true,"description":"The email address of this Contact"},"alternateEmail":{"type":"string","nullable":true,"description":"The alternate email address of this Contact"},"phoneNumber":{"type":"string","nullable":true,"description":"The phone number of this Contact"},"phoneNumberExt":{"type":"string","nullable":true,"description":"The phone number extension of this Contact"},"alternatePhoneNumber":{"type":"string","nullable":true,"description":"The alternate phone number of this Contact"},"alternatePhoneNumberExt":{"type":"string","nullable":true,"description":"The alternate phone number extension of this Contact"},"preferredContactMethod":{"type":"string","nullable":true,"description":"The preferred contact method for this Contact"},"address":{"type":"string","nullable":true,"description":"The address of this Contact"},"city":{"type":"string","nullable":true,"description":"The city of this Contact"},"state":{"type":"string","nullable":true,"description":"The state of this Contact"},"zip":{"type":"string","nullable":true,"description":"The zip or postal code of this Contact"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this Contact"},"source":{"$ref":"#/components/schemas/Source"},"owner":{"type":"object","nullable":true,"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"note":{"type":"string","nullable":true,"description":"A note about this Contact"},"tags":{"type":"array","description":"Tags associated with this Contact","items":{"type":"string"}}}},"Source":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","nullable":true,"description":"The ID of the entity on the other side"},"provider":{"type":"string","nullable":true,"description":"The name of the provider this entity came from"}}},"Owner":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique user ID"},"firstName":{"type":"string","description":"The first name of the user"},"lastName":{"type":"string","description":"The last name of the user"},"title":{"type":"string","description":"The job title of the user"},"email":{"type":"string","description":"The email address of the user"},"phoneNumber":{"type":"string","description":"The phone number of the user"},"phoneExtension":{"type":"string","description":"The phone extension of the user"}}},"Timestamp":{"type":"object","additionalProperties":false,"properties":{"created":{"type":"number","description":"The timestamp when this entity was created"},"updated":{"type":"number","description":"The timestamp when this entity was last updated"}}},"TagDetail":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The id of the tag"},"label":{"type":"string","description":"The label of the tag"},"deleted":{"type":"boolean","description":"Whether the tag has been deleted"},"updated":{"type":"number","description":"The last updated timestamp of the tag"}}},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes":{"get":{"summary":"List Quotes","operationId":"listQuotes","tags":["Quotes"],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","minimum":1}},{"name":"perPage","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100}},{"name":"query","in":"query","allowReserved":true,"schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"sortDir","in":"query","schema":{"type":"string","enum":["asc","desc"]}},{"name":"workOrder","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"List of quotes","content":{"application/json":{"schema":{"type":"object","properties":{"totalRows":{"type":"number"},"rows":{"type":"array","items":{"$ref":"#/components/schemas/QuoteSearchResult"}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /quotes

> Create Quote

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteUpdate":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"A unique ID for the Quote. Ignored when creating & updating quotes"},"number":{"type":"number","description":"The Number of the Quote"},"status":{"type":"string","nullable":true,"description":"The status of this quote"},"hourlyRate":{"type":"number","description":"The Hourly Rate of the Quote"},"contactId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use contact.id instead."},"contact":{"$ref":"#/components/schemas/Contact"},"billingContact":{"$ref":"#/components/schemas/Contact"},"dates":{"type":"object","additionalProperties":false,"description":"important dates about this quote","properties":{"quote":{"type":"number","description":"The date the quote was create"},"sent":{"type":"number","description":"The date the quote was most recently sent"},"viewed":{"type":"number","description":"The date the quote was most recently viewed"},"accepted":{"type":"number","description":"The date the quote was accepted"},"declined":{"type":"number","description":"The date the quote was declined"}}},"jobAddress":{"type":"object","additionalProperties":false,"description":"The Job Address/Identifier of this quote","properties":{"identifier":{"type":"string","nullable":true,"description":"The free-form job identifier of this quote"},"address":{"type":"string","nullable":true,"description":"The address component of the job address"},"city":{"type":"string","nullable":true,"description":"The city component of the job address"},"state":{"type":"string","nullable":true,"description":"The state component of the job address"},"zip":{"type":"string","nullable":true,"description":"The zip code component of the job address"}}},"parentQuoteId":{"type":"string","nullable":true,"description":"The unique ID of the parent quote if this quote was created from another quote"},"parentQuoteNumber":{"type":"number","description":"The quote number of the parent quote if this quote was created from another quote"},"childInvoiceId":{"type":"string","nullable":true,"description":"The unique ID of the invoice created from this quote if available"},"dealId":{"type":"string","nullable":true,"description":"The unique ID of the deal associated with this quote"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this quote"},"quoteType":{"type":"object","additionalProperties":false,"description":"The Quote Type of this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Type"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The text used to describe this Quote Type"}}},"quoteTypeId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"quoteTemplate":{"type":"object","additionalProperties":false,"description":"The Quote Template that was made to use this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Template"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The label of the Quote Template"}}},"quoteTemplateId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"totalAdjustment":{"type":"object","additionalProperties":false,"description":"The manual total adjustment applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the adjustment. Omitted if the adjustment is not a percentage"},"total":{"type":"number","description":"The calculated amount of the adjustment of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the adjustment"}}},"discount":{"type":"object","additionalProperties":false,"description":"The discount applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the discount. Omitted if the discount is not a percentage"},"total":{"type":"number","description":"The calculated amount of the discount of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the discount"}}},"tax":{"type":"object","additionalProperties":false,"description":"The tax applied to the quote","properties":{"rate":{"type":"number","description":"The percentage rate of tax"},"total":{"type":"number","description":"The total amount of tax applied"},"description":{"type":"string","nullable":true,"description":"The description of the tax"},"details":{"type":"array","description":"The detailed tax breakdown by rate","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","nullable":true,"description":"The id of the tax rate"},"rate":{"type":"number","description":"The percentage rate of tax"},"description":{"type":"string","nullable":true,"description":"The description of the tax rate"}}}}}},"terms":{"type":"string","nullable":true,"description":"The terms/contract associated with this quote"},"estimatorNotes":{"type":"string","nullable":true,"description":"The estimator notes associated with this quote"},"clientNote":{"type":"string","nullable":true,"description":"The client note associated with this quote"},"crewNote":{"type":"string","nullable":true,"description":"The crew note associated with this quote"},"totals":{"type":"object","additionalProperties":false,"description":"The totals of the quote","properties":{"price":{"type":"number","description":"The sub-total price of the quote"},"laborPrice":{"type":"number","description":"The labor component of the sub-total"},"materialsPrice":{"type":"number","description":"The materials component of the sub-total"},"additionalWorkLaborPrice":{"type":"number","description":"The additional work labor component of the total"},"additionalWorkMaterialsPrice":{"type":"number","description":"The additional work materials component of the total"},"afterAdjustment":{"type":"number","description":"The price after sub-total adjustment of the quote"},"afterDiscount":{"type":"number","description":"The price after discount of the quote"},"afterTax":{"type":"number","description":"The after tax price of the quote"},"hours":{"type":"number","description":"The number of hours of the quote"}}},"urls":{"type":"object","additionalProperties":false,"description":"Customer-View Links to this quote and work order","properties":{"quote":{"type":"string","description":"A link to this quote"},"workOrder":{"type":"string","description":"A link to this work order"}}},"source":{"$ref":"#/components/schemas/Source"},"owner":{"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"tags":{"type":"array","description":"Tags associated with this Quote","items":{"type":"string"}},"tagDetails":{"type":"array","description":"Detailed tag information associated with this Quote","items":{"$ref":"#/components/schemas/TagDetail"}}}},"Contact":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique ID of the Contact. Ignored when creating & updating contacts"},"firstName":{"type":"string","nullable":true,"description":"The First Name of the Contact."},"lastName":{"type":"string","nullable":true,"description":"The Last Name of the Contact"},"secondaryFirstName":{"type":"string","nullable":true,"description":"The secondary First Name of the Contact"},"secondaryLastName":{"type":"string","nullable":true,"description":"The secondary Last Name of the Contact"},"company":{"type":"string","nullable":true,"description":"The name of the Company this Contact is associated with"},"email":{"type":"string","nullable":true,"description":"The email address of this Contact"},"alternateEmail":{"type":"string","nullable":true,"description":"The alternate email address of this Contact"},"phoneNumber":{"type":"string","nullable":true,"description":"The phone number of this Contact"},"phoneNumberExt":{"type":"string","nullable":true,"description":"The phone number extension of this Contact"},"alternatePhoneNumber":{"type":"string","nullable":true,"description":"The alternate phone number of this Contact"},"alternatePhoneNumberExt":{"type":"string","nullable":true,"description":"The alternate phone number extension of this Contact"},"preferredContactMethod":{"type":"string","nullable":true,"description":"The preferred contact method for this Contact"},"address":{"type":"string","nullable":true,"description":"The address of this Contact"},"city":{"type":"string","nullable":true,"description":"The city of this Contact"},"state":{"type":"string","nullable":true,"description":"The state of this Contact"},"zip":{"type":"string","nullable":true,"description":"The zip or postal code of this Contact"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this Contact"},"source":{"$ref":"#/components/schemas/Source"},"owner":{"type":"object","nullable":true,"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"note":{"type":"string","nullable":true,"description":"A note about this Contact"},"tags":{"type":"array","description":"Tags associated with this Contact","items":{"type":"string"}}}},"Source":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","nullable":true,"description":"The ID of the entity on the other side"},"provider":{"type":"string","nullable":true,"description":"The name of the provider this entity came from"}}},"Owner":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique user ID"},"firstName":{"type":"string","description":"The first name of the user"},"lastName":{"type":"string","description":"The last name of the user"},"title":{"type":"string","description":"The job title of the user"},"email":{"type":"string","description":"The email address of the user"},"phoneNumber":{"type":"string","description":"The phone number of the user"},"phoneExtension":{"type":"string","description":"The phone extension of the user"}}},"Timestamp":{"type":"object","additionalProperties":false,"properties":{"created":{"type":"number","description":"The timestamp when this entity was created"},"updated":{"type":"number","description":"The timestamp when this entity was last updated"}}},"TagDetail":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The id of the tag"},"label":{"type":"string","description":"The label of the tag"},"deleted":{"type":"boolean","description":"Whether the tag has been deleted"},"updated":{"type":"number","description":"The last updated timestamp of the tag"}}},"Quote":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"A unique ID for the Quote. Ignored when creating & updating quotes"},"number":{"type":"number","description":"The Number of the Quote"},"status":{"type":"string","nullable":true,"description":"The status of this quote"},"hourlyRate":{"type":"number","description":"The Hourly Rate of the Quote"},"contactId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use contact.id instead."},"contact":{"$ref":"#/components/schemas/Contact"},"billingContact":{"$ref":"#/components/schemas/Contact"},"dates":{"type":"object","additionalProperties":false,"description":"important dates about this quote","properties":{"quote":{"type":"number","description":"The date the quote was create"},"sent":{"type":"number","description":"The date the quote was most recently sent"},"viewed":{"type":"number","description":"The date the quote was most recently viewed"},"accepted":{"type":"number","description":"The date the quote was accepted"},"declined":{"type":"number","description":"The date the quote was declined"}}},"jobAddress":{"type":"object","additionalProperties":false,"description":"The Job Address/Identifier of this quote","properties":{"identifier":{"type":"string","nullable":true,"description":"The free-form job identifier of this quote"},"address":{"type":"string","nullable":true,"description":"The address component of the job address"},"city":{"type":"string","nullable":true,"description":"The city component of the job address"},"state":{"type":"string","nullable":true,"description":"The state component of the job address"},"zip":{"type":"string","nullable":true,"description":"The zip code component of the job address"}}},"parentQuoteId":{"type":"string","nullable":true,"description":"The unique ID of the parent quote if this quote was created from another quote"},"parentQuoteNumber":{"type":"number","description":"The quote number of the parent quote if this quote was created from another quote"},"childInvoiceId":{"type":"string","nullable":true,"description":"The unique ID of the invoice created from this quote if available"},"dealId":{"type":"string","nullable":true,"description":"The unique ID of the deal associated with this quote"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this quote"},"quoteType":{"type":"object","additionalProperties":false,"description":"The Quote Type of this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Type"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The text used to describe this Quote Type"}}},"quoteTypeId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"quoteTemplate":{"type":"object","additionalProperties":false,"description":"The Quote Template that was made to use this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Template"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The label of the Quote Template"}}},"quoteTemplateId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"payments":{"type":"array","description":"Payments applied to this quote","items":{"$ref":"#/components/schemas/Payment"}},"totalAdjustment":{"type":"object","additionalProperties":false,"description":"The manual total adjustment applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the adjustment. Omitted if the adjustment is not a percentage"},"total":{"type":"number","description":"The calculated amount of the adjustment of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the adjustment"}}},"discount":{"type":"object","additionalProperties":false,"description":"The discount applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the discount. Omitted if the discount is not a percentage"},"total":{"type":"number","description":"The calculated amount of the discount of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the discount"}}},"tax":{"type":"object","additionalProperties":false,"description":"The tax applied to the quote","properties":{"rate":{"type":"number","description":"The percentage rate of tax"},"total":{"type":"number","description":"The total amount of tax applied"},"description":{"type":"string","nullable":true,"description":"The description of the tax"},"details":{"type":"array","description":"The detailed tax breakdown by rate","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","nullable":true,"description":"The id of the tax rate"},"rate":{"type":"number","description":"The percentage rate of tax"},"description":{"type":"string","nullable":true,"description":"The description of the tax rate"}}}}}},"terms":{"type":"string","nullable":true,"description":"The terms/contract associated with this quote"},"estimatorNotes":{"type":"string","nullable":true,"description":"The estimator notes associated with this quote"},"clientNote":{"type":"string","nullable":true,"description":"The client note associated with this quote"},"crewNote":{"type":"string","nullable":true,"description":"The crew note associated with this quote"},"totals":{"type":"object","additionalProperties":false,"description":"The totals of the quote","properties":{"price":{"type":"number","description":"The sub-total price of the quote"},"laborPrice":{"type":"number","description":"The labor component of the sub-total"},"materialsPrice":{"type":"number","description":"The materials component of the sub-total"},"additionalWorkLaborPrice":{"type":"number","description":"The additional work labor component of the total"},"additionalWorkMaterialsPrice":{"type":"number","description":"The additional work materials component of the total"},"afterAdjustment":{"type":"number","description":"The price after sub-total adjustment of the quote"},"afterDiscount":{"type":"number","description":"The price after discount of the quote"},"afterTax":{"type":"number","description":"The after tax price of the quote"},"hours":{"type":"number","description":"The number of hours of the quote"}}},"urls":{"type":"object","additionalProperties":false,"description":"Customer-View Links to this quote and work order","properties":{"quote":{"type":"string","description":"A link to this quote"},"workOrder":{"type":"string","description":"A link to this work order"}}},"source":{"$ref":"#/components/schemas/Source"},"owner":{"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"tags":{"type":"array","description":"Tags associated with this Quote","items":{"type":"string"}},"tagDetails":{"type":"array","description":"Detailed tag information associated with this Quote","items":{"$ref":"#/components/schemas/TagDetail"}}}},"Payment":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","nullable":true,"description":"The type of payment method"},"amount":{"type":"number","description":"The amount paid on this payment"},"date":{"type":"number","description":"The date the payment was made"},"note":{"type":"string","nullable":true,"description":"The note associated with this payment"},"deposit":{"type":"boolean","description":"Whether this payment is a deposit or not"}}},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes":{"post":{"summary":"Create Quote","operationId":"createQuote","tags":["Quotes"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteUpdate"}}}},"responses":{"200":{"description":"Details about the new Quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## GET /quotes/{id}

> Retrieve Quote

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Quote":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"A unique ID for the Quote. Ignored when creating & updating quotes"},"number":{"type":"number","description":"The Number of the Quote"},"status":{"type":"string","nullable":true,"description":"The status of this quote"},"hourlyRate":{"type":"number","description":"The Hourly Rate of the Quote"},"contactId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use contact.id instead."},"contact":{"$ref":"#/components/schemas/Contact"},"billingContact":{"$ref":"#/components/schemas/Contact"},"dates":{"type":"object","additionalProperties":false,"description":"important dates about this quote","properties":{"quote":{"type":"number","description":"The date the quote was create"},"sent":{"type":"number","description":"The date the quote was most recently sent"},"viewed":{"type":"number","description":"The date the quote was most recently viewed"},"accepted":{"type":"number","description":"The date the quote was accepted"},"declined":{"type":"number","description":"The date the quote was declined"}}},"jobAddress":{"type":"object","additionalProperties":false,"description":"The Job Address/Identifier of this quote","properties":{"identifier":{"type":"string","nullable":true,"description":"The free-form job identifier of this quote"},"address":{"type":"string","nullable":true,"description":"The address component of the job address"},"city":{"type":"string","nullable":true,"description":"The city component of the job address"},"state":{"type":"string","nullable":true,"description":"The state component of the job address"},"zip":{"type":"string","nullable":true,"description":"The zip code component of the job address"}}},"parentQuoteId":{"type":"string","nullable":true,"description":"The unique ID of the parent quote if this quote was created from another quote"},"parentQuoteNumber":{"type":"number","description":"The quote number of the parent quote if this quote was created from another quote"},"childInvoiceId":{"type":"string","nullable":true,"description":"The unique ID of the invoice created from this quote if available"},"dealId":{"type":"string","nullable":true,"description":"The unique ID of the deal associated with this quote"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this quote"},"quoteType":{"type":"object","additionalProperties":false,"description":"The Quote Type of this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Type"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The text used to describe this Quote Type"}}},"quoteTypeId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"quoteTemplate":{"type":"object","additionalProperties":false,"description":"The Quote Template that was made to use this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Template"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The label of the Quote Template"}}},"quoteTemplateId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"payments":{"type":"array","description":"Payments applied to this quote","items":{"$ref":"#/components/schemas/Payment"}},"totalAdjustment":{"type":"object","additionalProperties":false,"description":"The manual total adjustment applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the adjustment. Omitted if the adjustment is not a percentage"},"total":{"type":"number","description":"The calculated amount of the adjustment of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the adjustment"}}},"discount":{"type":"object","additionalProperties":false,"description":"The discount applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the discount. Omitted if the discount is not a percentage"},"total":{"type":"number","description":"The calculated amount of the discount of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the discount"}}},"tax":{"type":"object","additionalProperties":false,"description":"The tax applied to the quote","properties":{"rate":{"type":"number","description":"The percentage rate of tax"},"total":{"type":"number","description":"The total amount of tax applied"},"description":{"type":"string","nullable":true,"description":"The description of the tax"},"details":{"type":"array","description":"The detailed tax breakdown by rate","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","nullable":true,"description":"The id of the tax rate"},"rate":{"type":"number","description":"The percentage rate of tax"},"description":{"type":"string","nullable":true,"description":"The description of the tax rate"}}}}}},"terms":{"type":"string","nullable":true,"description":"The terms/contract associated with this quote"},"estimatorNotes":{"type":"string","nullable":true,"description":"The estimator notes associated with this quote"},"clientNote":{"type":"string","nullable":true,"description":"The client note associated with this quote"},"crewNote":{"type":"string","nullable":true,"description":"The crew note associated with this quote"},"totals":{"type":"object","additionalProperties":false,"description":"The totals of the quote","properties":{"price":{"type":"number","description":"The sub-total price of the quote"},"laborPrice":{"type":"number","description":"The labor component of the sub-total"},"materialsPrice":{"type":"number","description":"The materials component of the sub-total"},"additionalWorkLaborPrice":{"type":"number","description":"The additional work labor component of the total"},"additionalWorkMaterialsPrice":{"type":"number","description":"The additional work materials component of the total"},"afterAdjustment":{"type":"number","description":"The price after sub-total adjustment of the quote"},"afterDiscount":{"type":"number","description":"The price after discount of the quote"},"afterTax":{"type":"number","description":"The after tax price of the quote"},"hours":{"type":"number","description":"The number of hours of the quote"}}},"urls":{"type":"object","additionalProperties":false,"description":"Customer-View Links to this quote and work order","properties":{"quote":{"type":"string","description":"A link to this quote"},"workOrder":{"type":"string","description":"A link to this work order"}}},"source":{"$ref":"#/components/schemas/Source"},"owner":{"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"tags":{"type":"array","description":"Tags associated with this Quote","items":{"type":"string"}},"tagDetails":{"type":"array","description":"Detailed tag information associated with this Quote","items":{"$ref":"#/components/schemas/TagDetail"}}}},"Contact":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique ID of the Contact. Ignored when creating & updating contacts"},"firstName":{"type":"string","nullable":true,"description":"The First Name of the Contact."},"lastName":{"type":"string","nullable":true,"description":"The Last Name of the Contact"},"secondaryFirstName":{"type":"string","nullable":true,"description":"The secondary First Name of the Contact"},"secondaryLastName":{"type":"string","nullable":true,"description":"The secondary Last Name of the Contact"},"company":{"type":"string","nullable":true,"description":"The name of the Company this Contact is associated with"},"email":{"type":"string","nullable":true,"description":"The email address of this Contact"},"alternateEmail":{"type":"string","nullable":true,"description":"The alternate email address of this Contact"},"phoneNumber":{"type":"string","nullable":true,"description":"The phone number of this Contact"},"phoneNumberExt":{"type":"string","nullable":true,"description":"The phone number extension of this Contact"},"alternatePhoneNumber":{"type":"string","nullable":true,"description":"The alternate phone number of this Contact"},"alternatePhoneNumberExt":{"type":"string","nullable":true,"description":"The alternate phone number extension of this Contact"},"preferredContactMethod":{"type":"string","nullable":true,"description":"The preferred contact method for this Contact"},"address":{"type":"string","nullable":true,"description":"The address of this Contact"},"city":{"type":"string","nullable":true,"description":"The city of this Contact"},"state":{"type":"string","nullable":true,"description":"The state of this Contact"},"zip":{"type":"string","nullable":true,"description":"The zip or postal code of this Contact"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this Contact"},"source":{"$ref":"#/components/schemas/Source"},"owner":{"type":"object","nullable":true,"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"note":{"type":"string","nullable":true,"description":"A note about this Contact"},"tags":{"type":"array","description":"Tags associated with this Contact","items":{"type":"string"}}}},"Source":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","nullable":true,"description":"The ID of the entity on the other side"},"provider":{"type":"string","nullable":true,"description":"The name of the provider this entity came from"}}},"Owner":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique user ID"},"firstName":{"type":"string","description":"The first name of the user"},"lastName":{"type":"string","description":"The last name of the user"},"title":{"type":"string","description":"The job title of the user"},"email":{"type":"string","description":"The email address of the user"},"phoneNumber":{"type":"string","description":"The phone number of the user"},"phoneExtension":{"type":"string","description":"The phone extension of the user"}}},"Timestamp":{"type":"object","additionalProperties":false,"properties":{"created":{"type":"number","description":"The timestamp when this entity was created"},"updated":{"type":"number","description":"The timestamp when this entity was last updated"}}},"Payment":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","nullable":true,"description":"The type of payment method"},"amount":{"type":"number","description":"The amount paid on this payment"},"date":{"type":"number","description":"The date the payment was made"},"note":{"type":"string","nullable":true,"description":"The note associated with this payment"},"deposit":{"type":"boolean","description":"Whether this payment is a deposit or not"}}},"TagDetail":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The id of the tag"},"label":{"type":"string","description":"The label of the tag"},"deleted":{"type":"boolean","description":"Whether the tag has been deleted"},"updated":{"type":"number","description":"The last updated timestamp of the tag"}}},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}":{"get":{"summary":"Retrieve Quote","operationId":"getQuote","tags":["Quotes"],"parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}},{"name":"display","in":"query","description":"Display as either a Quote or Work Order.","required":false,"schema":{"type":"string","enum":["quote","work-order"],"default":"quote"}}],"responses":{"200":{"description":"Details about the quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## PUT /quotes/{id}

> Update Quote

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteUpdate":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"A unique ID for the Quote. Ignored when creating & updating quotes"},"number":{"type":"number","description":"The Number of the Quote"},"status":{"type":"string","nullable":true,"description":"The status of this quote"},"hourlyRate":{"type":"number","description":"The Hourly Rate of the Quote"},"contactId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use contact.id instead."},"contact":{"$ref":"#/components/schemas/Contact"},"billingContact":{"$ref":"#/components/schemas/Contact"},"dates":{"type":"object","additionalProperties":false,"description":"important dates about this quote","properties":{"quote":{"type":"number","description":"The date the quote was create"},"sent":{"type":"number","description":"The date the quote was most recently sent"},"viewed":{"type":"number","description":"The date the quote was most recently viewed"},"accepted":{"type":"number","description":"The date the quote was accepted"},"declined":{"type":"number","description":"The date the quote was declined"}}},"jobAddress":{"type":"object","additionalProperties":false,"description":"The Job Address/Identifier of this quote","properties":{"identifier":{"type":"string","nullable":true,"description":"The free-form job identifier of this quote"},"address":{"type":"string","nullable":true,"description":"The address component of the job address"},"city":{"type":"string","nullable":true,"description":"The city component of the job address"},"state":{"type":"string","nullable":true,"description":"The state component of the job address"},"zip":{"type":"string","nullable":true,"description":"The zip code component of the job address"}}},"parentQuoteId":{"type":"string","nullable":true,"description":"The unique ID of the parent quote if this quote was created from another quote"},"parentQuoteNumber":{"type":"number","description":"The quote number of the parent quote if this quote was created from another quote"},"childInvoiceId":{"type":"string","nullable":true,"description":"The unique ID of the invoice created from this quote if available"},"dealId":{"type":"string","nullable":true,"description":"The unique ID of the deal associated with this quote"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this quote"},"quoteType":{"type":"object","additionalProperties":false,"description":"The Quote Type of this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Type"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The text used to describe this Quote Type"}}},"quoteTypeId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"quoteTemplate":{"type":"object","additionalProperties":false,"description":"The Quote Template that was made to use this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Template"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The label of the Quote Template"}}},"quoteTemplateId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"totalAdjustment":{"type":"object","additionalProperties":false,"description":"The manual total adjustment applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the adjustment. Omitted if the adjustment is not a percentage"},"total":{"type":"number","description":"The calculated amount of the adjustment of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the adjustment"}}},"discount":{"type":"object","additionalProperties":false,"description":"The discount applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the discount. Omitted if the discount is not a percentage"},"total":{"type":"number","description":"The calculated amount of the discount of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the discount"}}},"tax":{"type":"object","additionalProperties":false,"description":"The tax applied to the quote","properties":{"rate":{"type":"number","description":"The percentage rate of tax"},"total":{"type":"number","description":"The total amount of tax applied"},"description":{"type":"string","nullable":true,"description":"The description of the tax"},"details":{"type":"array","description":"The detailed tax breakdown by rate","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","nullable":true,"description":"The id of the tax rate"},"rate":{"type":"number","description":"The percentage rate of tax"},"description":{"type":"string","nullable":true,"description":"The description of the tax rate"}}}}}},"terms":{"type":"string","nullable":true,"description":"The terms/contract associated with this quote"},"estimatorNotes":{"type":"string","nullable":true,"description":"The estimator notes associated with this quote"},"clientNote":{"type":"string","nullable":true,"description":"The client note associated with this quote"},"crewNote":{"type":"string","nullable":true,"description":"The crew note associated with this quote"},"totals":{"type":"object","additionalProperties":false,"description":"The totals of the quote","properties":{"price":{"type":"number","description":"The sub-total price of the quote"},"laborPrice":{"type":"number","description":"The labor component of the sub-total"},"materialsPrice":{"type":"number","description":"The materials component of the sub-total"},"additionalWorkLaborPrice":{"type":"number","description":"The additional work labor component of the total"},"additionalWorkMaterialsPrice":{"type":"number","description":"The additional work materials component of the total"},"afterAdjustment":{"type":"number","description":"The price after sub-total adjustment of the quote"},"afterDiscount":{"type":"number","description":"The price after discount of the quote"},"afterTax":{"type":"number","description":"The after tax price of the quote"},"hours":{"type":"number","description":"The number of hours of the quote"}}},"urls":{"type":"object","additionalProperties":false,"description":"Customer-View Links to this quote and work order","properties":{"quote":{"type":"string","description":"A link to this quote"},"workOrder":{"type":"string","description":"A link to this work order"}}},"source":{"$ref":"#/components/schemas/Source"},"owner":{"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"tags":{"type":"array","description":"Tags associated with this Quote","items":{"type":"string"}},"tagDetails":{"type":"array","description":"Detailed tag information associated with this Quote","items":{"$ref":"#/components/schemas/TagDetail"}}}},"Contact":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique ID of the Contact. Ignored when creating & updating contacts"},"firstName":{"type":"string","nullable":true,"description":"The First Name of the Contact."},"lastName":{"type":"string","nullable":true,"description":"The Last Name of the Contact"},"secondaryFirstName":{"type":"string","nullable":true,"description":"The secondary First Name of the Contact"},"secondaryLastName":{"type":"string","nullable":true,"description":"The secondary Last Name of the Contact"},"company":{"type":"string","nullable":true,"description":"The name of the Company this Contact is associated with"},"email":{"type":"string","nullable":true,"description":"The email address of this Contact"},"alternateEmail":{"type":"string","nullable":true,"description":"The alternate email address of this Contact"},"phoneNumber":{"type":"string","nullable":true,"description":"The phone number of this Contact"},"phoneNumberExt":{"type":"string","nullable":true,"description":"The phone number extension of this Contact"},"alternatePhoneNumber":{"type":"string","nullable":true,"description":"The alternate phone number of this Contact"},"alternatePhoneNumberExt":{"type":"string","nullable":true,"description":"The alternate phone number extension of this Contact"},"preferredContactMethod":{"type":"string","nullable":true,"description":"The preferred contact method for this Contact"},"address":{"type":"string","nullable":true,"description":"The address of this Contact"},"city":{"type":"string","nullable":true,"description":"The city of this Contact"},"state":{"type":"string","nullable":true,"description":"The state of this Contact"},"zip":{"type":"string","nullable":true,"description":"The zip or postal code of this Contact"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this Contact"},"source":{"$ref":"#/components/schemas/Source"},"owner":{"type":"object","nullable":true,"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"note":{"type":"string","nullable":true,"description":"A note about this Contact"},"tags":{"type":"array","description":"Tags associated with this Contact","items":{"type":"string"}}}},"Source":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","nullable":true,"description":"The ID of the entity on the other side"},"provider":{"type":"string","nullable":true,"description":"The name of the provider this entity came from"}}},"Owner":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"The unique user ID"},"firstName":{"type":"string","description":"The first name of the user"},"lastName":{"type":"string","description":"The last name of the user"},"title":{"type":"string","description":"The job title of the user"},"email":{"type":"string","description":"The email address of the user"},"phoneNumber":{"type":"string","description":"The phone number of the user"},"phoneExtension":{"type":"string","description":"The phone extension of the user"}}},"Timestamp":{"type":"object","additionalProperties":false,"properties":{"created":{"type":"number","description":"The timestamp when this entity was created"},"updated":{"type":"number","description":"The timestamp when this entity was last updated"}}},"TagDetail":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The id of the tag"},"label":{"type":"string","description":"The label of the tag"},"deleted":{"type":"boolean","description":"Whether the tag has been deleted"},"updated":{"type":"number","description":"The last updated timestamp of the tag"}}},"Quote":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"A unique ID for the Quote. Ignored when creating & updating quotes"},"number":{"type":"number","description":"The Number of the Quote"},"status":{"type":"string","nullable":true,"description":"The status of this quote"},"hourlyRate":{"type":"number","description":"The Hourly Rate of the Quote"},"contactId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use contact.id instead."},"contact":{"$ref":"#/components/schemas/Contact"},"billingContact":{"$ref":"#/components/schemas/Contact"},"dates":{"type":"object","additionalProperties":false,"description":"important dates about this quote","properties":{"quote":{"type":"number","description":"The date the quote was create"},"sent":{"type":"number","description":"The date the quote was most recently sent"},"viewed":{"type":"number","description":"The date the quote was most recently viewed"},"accepted":{"type":"number","description":"The date the quote was accepted"},"declined":{"type":"number","description":"The date the quote was declined"}}},"jobAddress":{"type":"object","additionalProperties":false,"description":"The Job Address/Identifier of this quote","properties":{"identifier":{"type":"string","nullable":true,"description":"The free-form job identifier of this quote"},"address":{"type":"string","nullable":true,"description":"The address component of the job address"},"city":{"type":"string","nullable":true,"description":"The city component of the job address"},"state":{"type":"string","nullable":true,"description":"The state component of the job address"},"zip":{"type":"string","nullable":true,"description":"The zip code component of the job address"}}},"parentQuoteId":{"type":"string","nullable":true,"description":"The unique ID of the parent quote if this quote was created from another quote"},"parentQuoteNumber":{"type":"number","description":"The quote number of the parent quote if this quote was created from another quote"},"childInvoiceId":{"type":"string","nullable":true,"description":"The unique ID of the invoice created from this quote if available"},"dealId":{"type":"string","nullable":true,"description":"The unique ID of the deal associated with this quote"},"leadSource":{"type":"string","nullable":true,"description":"The lead source of this quote"},"quoteType":{"type":"object","additionalProperties":false,"description":"The Quote Type of this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Type"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The text used to describe this Quote Type"}}},"quoteTypeId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"quoteTemplate":{"type":"object","additionalProperties":false,"description":"The Quote Template that was made to use this quote","properties":{"id":{"type":"string","nullable":true,"description":"The unique ID of the Quote Template"},"value":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteType.id instead"},"label":{"type":"string","nullable":true,"description":"The label of the Quote Template"}}},"quoteTemplateId":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Use quoteTemplate.id instead"},"payments":{"type":"array","description":"Payments applied to this quote","items":{"$ref":"#/components/schemas/Payment"}},"totalAdjustment":{"type":"object","additionalProperties":false,"description":"The manual total adjustment applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the adjustment. Omitted if the adjustment is not a percentage"},"total":{"type":"number","description":"The calculated amount of the adjustment of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the adjustment"}}},"discount":{"type":"object","additionalProperties":false,"description":"The discount applied to the quote","properties":{"rate":{"type":"number","description":"The percentage of the discount. Omitted if the discount is not a percentage"},"total":{"type":"number","description":"The calculated amount of the discount of the sub-total"},"description":{"type":"string","nullable":true,"description":"The description of the discount"}}},"tax":{"type":"object","additionalProperties":false,"description":"The tax applied to the quote","properties":{"rate":{"type":"number","description":"The percentage rate of tax"},"total":{"type":"number","description":"The total amount of tax applied"},"description":{"type":"string","nullable":true,"description":"The description of the tax"},"details":{"type":"array","description":"The detailed tax breakdown by rate","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","nullable":true,"description":"The id of the tax rate"},"rate":{"type":"number","description":"The percentage rate of tax"},"description":{"type":"string","nullable":true,"description":"The description of the tax rate"}}}}}},"terms":{"type":"string","nullable":true,"description":"The terms/contract associated with this quote"},"estimatorNotes":{"type":"string","nullable":true,"description":"The estimator notes associated with this quote"},"clientNote":{"type":"string","nullable":true,"description":"The client note associated with this quote"},"crewNote":{"type":"string","nullable":true,"description":"The crew note associated with this quote"},"totals":{"type":"object","additionalProperties":false,"description":"The totals of the quote","properties":{"price":{"type":"number","description":"The sub-total price of the quote"},"laborPrice":{"type":"number","description":"The labor component of the sub-total"},"materialsPrice":{"type":"number","description":"The materials component of the sub-total"},"additionalWorkLaborPrice":{"type":"number","description":"The additional work labor component of the total"},"additionalWorkMaterialsPrice":{"type":"number","description":"The additional work materials component of the total"},"afterAdjustment":{"type":"number","description":"The price after sub-total adjustment of the quote"},"afterDiscount":{"type":"number","description":"The price after discount of the quote"},"afterTax":{"type":"number","description":"The after tax price of the quote"},"hours":{"type":"number","description":"The number of hours of the quote"}}},"urls":{"type":"object","additionalProperties":false,"description":"Customer-View Links to this quote and work order","properties":{"quote":{"type":"string","description":"A link to this quote"},"workOrder":{"type":"string","description":"A link to this work order"}}},"source":{"$ref":"#/components/schemas/Source"},"owner":{"$ref":"#/components/schemas/Owner"},"timestamp":{"$ref":"#/components/schemas/Timestamp"},"tags":{"type":"array","description":"Tags associated with this Quote","items":{"type":"string"}},"tagDetails":{"type":"array","description":"Detailed tag information associated with this Quote","items":{"$ref":"#/components/schemas/TagDetail"}}}},"Payment":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","nullable":true,"description":"The type of payment method"},"amount":{"type":"number","description":"The amount paid on this payment"},"date":{"type":"number","description":"The date the payment was made"},"note":{"type":"string","nullable":true,"description":"The note associated with this payment"},"deposit":{"type":"boolean","description":"Whether this payment is a deposit or not"}}},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}":{"put":{"summary":"Update Quote","parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteUpdate"}}}},"operationId":"updateQuote","tags":["Quotes"],"responses":{"200":{"description":"The updated quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## DELETE /quotes/{id}

> Delete Quote

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}":{"delete":{"summary":"Delete Quote","parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}}],"operationId":"deleteQuote","tags":["Quotes"],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## GET /quotes/{id}/items

> List Quote Items

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteItem":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Unique identifier for the quote item"},"name":{"type":"string","description":"The title/name for this item"},"quoteType":{"type":"string","description":"The quote type this item applies to"},"description":{"type":"string","description":"The plain text description for this item"},"descriptionHtml":{"type":"string","description":"The HTML formatted description for this item"},"price":{"type":"number","description":"The total price for this item"},"hours":{"type":"number","description":"The estimated hours for this item"},"quantity":{"type":"number","description":"The quantity of this item"},"pricePerUnit":{"type":"number","description":"The price per unit if quantity-based pricing"},"files":{"type":"array","description":"Files attached to this item","items":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier for the file"},"src":{"type":"string","description":"URL or path to the file"},"title":{"type":"string","description":"Title of the file"},"caption":{"type":"string","description":"Caption or description of the file"}}}},"source":{"type":"object","description":"External source information if item is from external system","properties":{"provider":{"type":"string","description":"The provider/system name"},"id":{"type":"string","description":"External system ID"},"value":{"type":"string","description":"External system value"},"label":{"type":"string","description":"External system label"}}},"section":{"type":"string","enum":["bid","options","archived","additional","pending"],"description":"The section this item belongs to","default":"bid"}},"required":["name","price"]},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}/items":{"get":{"summary":"List Quote Items","operationId":"listQuoteItems","tags":["Quotes"],"parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of quote items","content":{"application/json":{"schema":{"type":"object","properties":{"bid":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}},"options":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}},"archived":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}},"additionalWork":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}},"pending":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## POST /quotes/{id}/items

> Create Quote Item

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteItemCreate":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The title/name for this item"},"quoteType":{"type":"string","description":"The quote type this item applies to"},"description":{"type":"string","description":"The plain text description for this item"},"descriptionHtml":{"type":"string","description":"The HTML formatted description for this item"},"price":{"type":"number","description":"The total price for this item"},"hours":{"type":"number","description":"The estimated hours for this item"},"quantity":{"type":"number","description":"The quantity of this item"},"pricePerUnit":{"type":"number","description":"The price per unit if quantity-based pricing"},"files":{"type":"array","description":"Files attached to this item","items":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier for the file"},"src":{"type":"string","description":"URL or path to the file"},"title":{"type":"string","description":"Title of the file"},"caption":{"type":"string","description":"Caption or description of the file"}}}},"source":{"type":"object","description":"External source information if item is from external system","properties":{"provider":{"type":"string","description":"The provider/system name"},"id":{"type":"string","description":"External system ID"},"value":{"type":"string","description":"External system value"},"label":{"type":"string","description":"External system label"}}},"section":{"type":"string","enum":["bid","options","archived","additional","pending"],"description":"The section this item belongs to","default":"bid"}},"required":["name","price"]},"QuoteItem":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Unique identifier for the quote item"},"name":{"type":"string","description":"The title/name for this item"},"quoteType":{"type":"string","description":"The quote type this item applies to"},"description":{"type":"string","description":"The plain text description for this item"},"descriptionHtml":{"type":"string","description":"The HTML formatted description for this item"},"price":{"type":"number","description":"The total price for this item"},"hours":{"type":"number","description":"The estimated hours for this item"},"quantity":{"type":"number","description":"The quantity of this item"},"pricePerUnit":{"type":"number","description":"The price per unit if quantity-based pricing"},"files":{"type":"array","description":"Files attached to this item","items":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier for the file"},"src":{"type":"string","description":"URL or path to the file"},"title":{"type":"string","description":"Title of the file"},"caption":{"type":"string","description":"Caption or description of the file"}}}},"source":{"type":"object","description":"External source information if item is from external system","properties":{"provider":{"type":"string","description":"The provider/system name"},"id":{"type":"string","description":"External system ID"},"value":{"type":"string","description":"External system value"},"label":{"type":"string","description":"External system label"}}},"section":{"type":"string","enum":["bid","options","archived","additional","pending"],"description":"The section this item belongs to","default":"bid"}},"required":["name","price"]},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}/items":{"post":{"summary":"Create Quote Item","operationId":"createQuoteItem","tags":["Quotes"],"parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteItemCreate"}}}},"responses":{"200":{"description":"Details about the new Quote Item","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteItem"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## GET /quotes/{id}/items/{itemId}

> Get Quote Item

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteItem":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Unique identifier for the quote item"},"name":{"type":"string","description":"The title/name for this item"},"quoteType":{"type":"string","description":"The quote type this item applies to"},"description":{"type":"string","description":"The plain text description for this item"},"descriptionHtml":{"type":"string","description":"The HTML formatted description for this item"},"price":{"type":"number","description":"The total price for this item"},"hours":{"type":"number","description":"The estimated hours for this item"},"quantity":{"type":"number","description":"The quantity of this item"},"pricePerUnit":{"type":"number","description":"The price per unit if quantity-based pricing"},"files":{"type":"array","description":"Files attached to this item","items":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier for the file"},"src":{"type":"string","description":"URL or path to the file"},"title":{"type":"string","description":"Title of the file"},"caption":{"type":"string","description":"Caption or description of the file"}}}},"source":{"type":"object","description":"External source information if item is from external system","properties":{"provider":{"type":"string","description":"The provider/system name"},"id":{"type":"string","description":"External system ID"},"value":{"type":"string","description":"External system value"},"label":{"type":"string","description":"External system label"}}},"section":{"type":"string","enum":["bid","options","archived","additional","pending"],"description":"The section this item belongs to","default":"bid"}},"required":["name","price"]},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}/items/{itemId}":{"get":{"summary":"Get Quote Item","operationId":"getQuoteItem","tags":["Quotes"],"parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","description":"ID of the Quote Item","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the quote item","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteItem"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## PUT /quotes/{id}/items/{itemId}

> Update Quote Item

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"QuoteItemUpdate":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The title/name for this item"},"quoteType":{"type":"string","description":"The quote type this item applies to"},"description":{"type":"string","description":"The plain text description for this item"},"descriptionHtml":{"type":"string","description":"The HTML formatted description for this item"},"price":{"type":"number","description":"The total price for this item"},"hours":{"type":"number","description":"The estimated hours for this item"},"quantity":{"type":"number","description":"The quantity of this item"},"pricePerUnit":{"type":"number","description":"The price per unit if quantity-based pricing"},"files":{"type":"array","description":"Files attached to this item","items":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier for the file"},"src":{"type":"string","description":"URL or path to the file"},"title":{"type":"string","description":"Title of the file"},"caption":{"type":"string","description":"Caption or description of the file"}}}},"source":{"type":"object","description":"External source information if item is from external system","properties":{"provider":{"type":"string","description":"The provider/system name"},"id":{"type":"string","description":"External system ID"},"value":{"type":"string","description":"External system value"},"label":{"type":"string","description":"External system label"}}},"section":{"type":"string","enum":["bid","options","archived","additional","pending"],"description":"The section this item belongs to"}}},"QuoteItem":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Unique identifier for the quote item"},"name":{"type":"string","description":"The title/name for this item"},"quoteType":{"type":"string","description":"The quote type this item applies to"},"description":{"type":"string","description":"The plain text description for this item"},"descriptionHtml":{"type":"string","description":"The HTML formatted description for this item"},"price":{"type":"number","description":"The total price for this item"},"hours":{"type":"number","description":"The estimated hours for this item"},"quantity":{"type":"number","description":"The quantity of this item"},"pricePerUnit":{"type":"number","description":"The price per unit if quantity-based pricing"},"files":{"type":"array","description":"Files attached to this item","items":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier for the file"},"src":{"type":"string","description":"URL or path to the file"},"title":{"type":"string","description":"Title of the file"},"caption":{"type":"string","description":"Caption or description of the file"}}}},"source":{"type":"object","description":"External source information if item is from external system","properties":{"provider":{"type":"string","description":"The provider/system name"},"id":{"type":"string","description":"External system ID"},"value":{"type":"string","description":"External system value"},"label":{"type":"string","description":"External system label"}}},"section":{"type":"string","enum":["bid","options","archived","additional","pending"],"description":"The section this item belongs to","default":"bid"}},"required":["name","price"]},"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}/items/{itemId}":{"put":{"summary":"Update Quote Item","operationId":"updateQuoteItem","tags":["Quotes"],"parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","description":"ID of the Quote Item","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteItemUpdate"}}}},"responses":{"200":{"description":"Updated quote item details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteItem"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## DELETE /quotes/{id}/items/{itemId}

> Delete Quote Item

```json
{"openapi":"3.0.0","info":{"title":"Core API","version":"v2"},"servers":[{"url":"https://openapi.paintscout.com/v2"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","additionalProperties":false,"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Array of error messages"}}}}},"paths":{"/quotes/{id}/items/{itemId}":{"delete":{"summary":"Delete Quote Item","operationId":"deleteQuoteItem","tags":["Quotes"],"parameters":[{"name":"id","in":"path","description":"ID of the Quote","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","description":"ID of the Quote Item","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Quote item successfully deleted"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Not Authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.paintscout.com/developers/quotes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
