---
title: "Update fields on a Quote"
method: PATCH
path: "/quotes/public/{quoteNumber}"
tags: ["Quotes"]
---

# Update fields on a Quote

`PATCH /quotes/public/{quoteNumber}`

## Request

- Base URL: `https://api.paperlessparts.com/v1`
- URL: `https://api.paperlessparts.com/v1/quotes/public/{quoteNumber}`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/paperlessparts/apis/paperless-parts-api/docs/quotes/public/:quoteNumber/patch.ts> (a function with typed inputs; its response is checked against the schema)

Update fields on a Quote.

## Path parameters

- `quoteNumber` integer, required: A unique identifier for a Quote

## Query parameters

- `revision` integer: A unique revision number for a Quote. May be null.

## Request body

- object
  - `erp_code` string, nullable: The unique identifier of the corresponding quote record in the ERP system, cast to a string.

## Response `200`

Successful response

- Quote: Data representing a Quote
  - `uuid` string, uuid
  - `authenticated_pdf_quote_url` string, url, nullable
  - `contact` QuoteContact
    - `account` object
      - `erp_code` string, nullable
      - `id` number
      - `notes` string, nullable
      - `name` string
    - `email` string, email
    - `first_name` string
    - `id` number
    - `last_name` string
    - `notes` string, nullable
    - `phone` string, nullable
    - `phone_ext` string, nullable
  - `created` string, date-time
  - `customer` QuoteCustomer: Deprecated! Will be removed soon
    - `first_name` string
    - `last_name` string
    - `email` string, email
    - `notes` string, nullable
    - `company` object
      - `notes` string, nullable
      - `metrics` object
        - `order_revenue_all_time` number, float
        - `order_revenue_last_thirty_days` number, float
        - `quotes_sent_all_time` integer
        - `quotes_sent_last_thirty_days` integer
      - `business_name` string
      - `erp_code` string
  - `digital_last_viewed_on` string, date-time, nullable: The last time the quote recipient viewed the quote
  - `due_date` string, date-time, nullable
  - `erp_code` string, nullable
  - `estimator` SalesPerson
    - `uuid` string, uuid
    - `first_name` string
    - `last_name` string
    - `email` string, email
    - `erp_code` string
  - `metadata` object, nullable
  - `ordered_date` string, date-time, nullable
  - `priority` integer, nullable
  - `rfq_number` string, nullable
  - `send_from_facility` Facility, nullable
    - `account_id` integer
    - `address` Address
      - `id` integer
      - `address1` string: (Required)
      - `address2` string, nullable: (Required)
      - `city` string: (Required)
      - `state` string: (Required) State/Province must be specified as standard postal abbreviation
      - `postal_code` string: (Required) US postal codes may optionally contain 4-digit extension, e.g., `'02114-1234'`
      - `country` string: (Required) Country must be ISO 3166-1 alpha-3 code. Currently allowed values are `'USA'`, `'CAN'`.
      - `erp_code` string: The unique identifier for this address record in the ERP
    - `attention` string
    - `id` integer
    - `name` string
    - `salesperson` SalesPerson
      - `uuid` string, uuid
      - `first_name` string
      - `last_name` string
      - `email` string, email
      - `erp_code` string
  - `expired` boolean
  - `expired_date` string, date-time
  - `export_controlled` boolean: Whether or not this quote contains data that is export controlled (ITAR) by the US Government.
  - `id` integer
  - `is_unviewed_drafted_rfq` boolean: Quotes can be automatically generated by a supplier's RFQ form. If this quote was drafted via an RFQ and has not been viewed, this will be true.
  - `number` integer: A unique identifier for a Quote
  - `order_numbers` OrderNumber[]: An array of Order numbers
  - `parent_quote` ParentQuote: Basic information about the quote this was copied from, if any. This field may be NULL.
    - `id` integer
    - `number` integer
    - `status` string
  - `parent_supplier_order` ParentSupplierOrder: Basic information about the order this was copied from, if any. This field may be NULL.
    - `id` integer
    - `number` integer
    - `status` string
  - `private_notes` string, nullable
  - `quote_items` QuoteItem[]
    - `id` integer
    - `type` 'automatic' | 'manual': Indicates whether the quote item is associated with a part (automatic pricing), or not (manual pricing).
    - `root_component_id` integer: ID of the root component. A root component houses the pricing information for a quote item. Every quote item has a root component. In the case of an automatic quote item, the root component corresponds to a part; in the case of a manual quote item, which does not have an associated part, the root component stores the manual pricing data. As the name 'root component' implies, it is possible for a quote item to have many components, as in the case of an assembly of nested parts.
    - `components` QuoteComponent[]
      - `id` string
      - `add_ons` QuoteAddOn[]
        - `is_required` boolean
        - `name` string
        - `erp_code` string
        - `notes` string
        - `quantities` QuoteAddOnQuantity[]
          - `price` number, float
          - `manual_price` number, float
          - `quantity` integer
        - `costing_variables` QuoteCostingVariable[]
          - `label` string
          - `variable_class` 'basic' | 'drop_down' | 'table'
          - `value_type` 'string' | 'number' | 'currency' | 'boolean': Describes the type of the 'value' key in quantities property
          - `quantity_specific` boolean: Flag as to whether or not this costing variable can be manipulated for each quantity break
          - `quantities` object[]: The value of the costing variable for each quoted quantity. This is an object with keys corresponding to the top level quote quantities in string form e.g. '1', '5', '10'. The values for each of these keys take different shape depending on the variable_class. If variable_class=='basic', the dictionary values will take the shape {'value': 1.0}. If variable_class=='drop_down', the dictionary values will take the shape {'value': 'a', 'options': ['a', 'b']}. If variable_class=='table', the dictionary values will take the shape {'value': 'a', 'row': {'column1': 'a', 'column2': 'b'}}. So for quoted quantities 1, 5, 10 for a basic variable_class, the object will look like: {'1': {'value': 1.0}, '5': {'value': 2.0}, '10': {'value': 3.0}}
            - `stringQuotedQuantity1` object
              - …
            - `stringQuotedQuantity2` object
              - …
          - `type` string: To Be Deprecated
          - `value` union: This will be indicated by the value_type field. To Be Deprecated
            - string
            - number
            - integer
            - boolean
          - `row` object, nullable: The row field will only be non-null when the type field is 'table'. Row represents a row in a lookup table and is an object with arbitrary keys. To Be Deprecated
      - `discounts` object[]
      - `is_assembly` boolean
      - `obtain_method` string, nullable
      - `part_custom_attrs` object[]
      - `pricing_items` object[]
      - `quantities` QuoteQuantity[]
        - `id` integer
        - `quantity` integer
        - `markup_1_price` number, float, nullable: Users of Paperless Parts can specify up to two distinct markup values on a component.
        - `markup_1_name` string, nullable
        - `markup_2_price` number, float, nullable: Users of Paperless Parts can specify up to two distinct markup values on a component.
        - `markup_2_name` string, nullable
        - `unit_price` number, float
        - `total_price` number, float
        - `total_price_with_required_add_ons` number, float
        - `lead_time` integer: Days
        - `expedites` QuoteExpedite[]
          - `id` integer
          - `lead_time` integer: Days
          - `markup` number, float: Percent
          - `unit_price` number, float
          - `total_price` number, float
        - `is_most_likely_won_quantity` boolean: Whether or not this quantity is the most likely quantity to be won.
        - `most_likely_won_quantity_percent` integer
        - `deliver_quantity` integer
        - `make_quantity` integer
        - `manual_total_unit_price` number, float, nullable
        - `total_component_overrides_cost` number, float, nullable
        - `total_discount` number, float, nullable
        - `total_discount_percentage` number, float, nullable
        - `total_inside_processing_cost` number, float, nullable
        - `total_outside_processing_cost` number, float, nullable
        - `total_price_before_discounts` number, float, nullable
        - `total_purchased_component_cost` number, float, nullable
        - `total_raw_material_cost` number, float, nullable
        - `unit_price_before_discounts` number, float, nullable
        - `yield_pct` number, float, nullable
      - `child_ids` integer[]
      - `children` ComponentChild[]
        - `child_id` integer: ID of the child component
        - `quantity` integer: The number of child component instances belonging to this parent. Note, the total number of instances of this child component in this assembly tree may be larger if this child appears in multiple places in the tree.
      - `description` string, nullable
      - `export_controlled` boolean: Whether or not this component contains data that is export controlled (ITAR) by the US Government.
      - `finishes` string[]: Note: this field is deprecated. Finishes now show up as Operations.
      - `innate_quantity` integer: The quantity of this subcomponent that must be produced to make one top-level component.
      - `is_root_component` boolean
      - `material` OrderMaterial: This can also be null
        - `id` integer
        - `display_name` string
        - `family` string
        - `material_class` string
        - `name` string
      - `material_operations` QuoteOperation[]
        - `id` integer
        - `category` 'material' | 'operation'
        - `cost` number, float
        - `costing_variables` QuoteCostingVariable[]
          - `label` string
          - `variable_class` 'basic' | 'drop_down' | 'table'
          - `value_type` 'string' | 'number' | 'currency' | 'boolean': Describes the type of the 'value' key in quantities property
          - `quantity_specific` boolean: Flag as to whether or not this costing variable can be manipulated for each quantity break
          - `quantities` object[]: The value of the costing variable for each quoted quantity. This is an object with keys corresponding to the top level quote quantities in string form e.g. '1', '5', '10'. The values for each of these keys take different shape depending on the variable_class. If variable_class=='basic', the dictionary values will take the shape {'value': 1.0}. If variable_class=='drop_down', the dictionary values will take the shape {'value': 'a', 'options': ['a', 'b']}. If variable_class=='table', the dictionary values will take the shape {'value': 'a', 'row': {'column1': 'a', 'column2': 'b'}}. So for quoted quantities 1, 5, 10 for a basic variable_class, the object will look like: {'1': {'value': 1.0}, '5': {'value': 2.0}, '10': {'value': 3.0}}
            - `stringQuotedQuantity1` object
              - …
            - `stringQuotedQuantity2` object
              - …
          - `type` string: To Be Deprecated
          - `value` union: This will be indicated by the value_type field. To Be Deprecated
            - string
            - number
            - integer
            - boolean
          - `row` object, nullable: The row field will only be non-null when the type field is 'table'. Row represents a row in a lookup table and is an object with arbitrary keys. To Be Deprecated
        - `quantities` OperationQuantity[]
          - `price` number, float
          - `manual_price` number, float, nullable
          - `lead_time` integer, nullable
          - `manual_lead_time` integer, nullable
          - `quantity` integer
        - `is_finish` boolean
        - `is_outside_service` boolean
        - `name` string
        - `erp_code` string
        - `operation_definition_name` string
        - `notes` string, nullable
        - `position` integer: The position of the order operation in the order display, indexed from 1. Note that the position applies across both material operations and order operations. TODO - this shows up as 0 if there is only one operation on the order?
        - `runtime` number, float, nullable
        - `setup_time` number, float, nullable
      - `parent_ids` integer[]
      - `part_name` string
      - `part_number` string, nullable
      - `part_url` string, url
      - `part_uuid` string
      - `process` OrderProcess
        - `id` integer
        - `external_name` string
        - `name` string
      - `purchased_component` QuotePurchasedComponent
        - `oem_part_number` string: Unique identifier for purchased component within a supplier account
        - `internal_part_number` string, nullable
        - `description` string, nullable
        - `piece_price` number: Cost per piece to 4 decimal places
        - `id` string
        - `properties` PurchasedComponentProperty[]
          - `name` string: Name of corresponding purchased component column in table display
          - `code_name` string: Name used to access property within pricing formulas via 'dot' operator
          - `value_type` 'string' | 'boolean' | 'numeric'
          - `value` union: Value of property, None or of type corresponding to value_type
            - string
            - number
            - boolean
      - `revision` string, nullable
      - `shop_operations` QuoteOperation[]
        - `id` integer
        - `category` 'material' | 'operation'
        - `cost` number, float
        - `costing_variables` QuoteCostingVariable[]
          - `label` string
          - `variable_class` 'basic' | 'drop_down' | 'table'
          - `value_type` 'string' | 'number' | 'currency' | 'boolean': Describes the type of the 'value' key in quantities property
          - `quantity_specific` boolean: Flag as to whether or not this costing variable can be manipulated for each quantity break
          - `quantities` object[]: The value of the costing variable for each quoted quantity. This is an object with keys corresponding to the top level quote quantities in string form e.g. '1', '5', '10'. The values for each of these keys take different shape depending on the variable_class. If variable_class=='basic', the dictionary values will take the shape {'value': 1.0}. If variable_class=='drop_down', the dictionary values will take the shape {'value': 'a', 'options': ['a', 'b']}. If variable_class=='table', the dictionary values will take the shape {'value': 'a', 'row': {'column1': 'a', 'column2': 'b'}}. So for quoted quantities 1, 5, 10 for a basic variable_class, the object will look like: {'1': {'value': 1.0}, '5': {'value': 2.0}, '10': {'value': 3.0}}
            - `stringQuotedQuantity1` object
              - …
            - `stringQuotedQuantity2` object
              - …
          - `type` string: To Be Deprecated
          - `value` union: This will be indicated by the value_type field. To Be Deprecated
            - string
            - number
            - integer
            - boolean
          - `row` object, nullable: The row field will only be non-null when the type field is 'table'. Row represents a row in a lookup table and is an object with arbitrary keys. To Be Deprecated
        - `quantities` OperationQuantity[]
          - `price` number, float
          - `manual_price` number, float, nullable
          - `lead_time` integer, nullable
          - `manual_lead_time` integer, nullable
          - `quantity` integer
        - `is_finish` boolean
        - `is_outside_service` boolean
        - `name` string
        - `erp_code` string
        - `operation_definition_name` string
        - `notes` string, nullable
        - `position` integer: The position of the order operation in the order display, indexed from 1. Note that the position applies across both material operations and order operations. TODO - this shows up as 0 if there is only one operation on the order?
        - `runtime` number, float, nullable
        - `setup_time` number, float, nullable
      - `supporting_files` OrderSupportingFile[]
        - `filename` string
        - `url` string, url
      - `thumbnail_url` string, nullable
      - `type` 'assembled' | 'manufactured' | 'purchased'
    - `position` integer: The position of the quote item in the quote display, indexed from 1.
    - `export_controlled` boolean: Whether or not this quote item contains data that is export controlled (ITAR) by the US Government.
    - `component_ids` integer[]
    - `metadata` object, nullable
    - `private_notes` string, nullable
    - `public_notes` string, nullable
    - `workflow_status` string, nullable
    - `root_component` object, nullable
  - `quote_notes` string, nullable
  - `request_for_quote` RequestForQuote: Data representing a RequestForQuote object
    - `id` integer
    - `email` string
    - `first_name` string
    - `last_name` string
    - `business_name` string
    - `phone` string
    - `phone_ext` string
    - `requested_delivery_date` string
    - `contact_info_conflict` boolean
    - `marketing_source` string
  - `revision_number` integer: A unique revision number for a Quote. May be null.
  - `sales_person` SalesPerson
    - `uuid` string, uuid
    - `first_name` string
    - `last_name` string
    - `email` string, email
    - `erp_code` string
  - `salesperson` SalesPerson
    - `uuid` string, uuid
    - `first_name` string
    - `last_name` string
    - `email` string, email
    - `erp_code` string
  - `sent_date` string, date-time, nullable
  - `status` 'draft' | 'outstanding' | 'expired' | 'cancelled' | 'partially_accepted' | 'accepted' | 'trash' | 'lost'
  - `tax_cost` number, float
  - `tax_rate` number, float

---

[API](https://skmtc.dev/paperlessparts/apis/paperless-parts-api.md) - [All operations](https://skmtc.dev/paperlessparts/apis/paperless-parts-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paperlessparts/apis/paperless-parts-api/revisions/3eb132ead1fe?raw)
