> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dualentry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Change Order

> Update an existing change order.



## OpenAPI

````yaml /developers/openapi/resources-v2.json put /public/v2/contracts/{contract_id}/change-orders/{change_order_id}/
openapi: 3.1.0
info:
  title: DualEntry Public API
  version: 2.0.0
  description: ''
servers:
  - url: https://api.dualentry.com
    description: Production environment
security: []
tags:
  - name: Health
    description: >-
      Monitor API availability and service status. Use these endpoints to verify
      connectivity and check if the API is operational.
  - name: Webhooks
    description: >-
      Register webhook endpoints to receive real-time event notifications when
      records change in your organization. Manage subscriptions, view available
      topics, and inspect delivery history. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Accounts
    description: >-
      Manage your chart of accounts. Create and maintain the accounts used to
      categorize financial transactions, including assets, liabilities, equity,
      revenue, and expenses. If your organization connects an integration that
      syncs this resource with a third-party system, a change you make here can
      also be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Reporting
    description: >-
      Read account balances for one company as of a date, equivalent to a Trial
      Balance report. Balance-sheet accounts report through the date;
      income-statement accounts report from the start of the fiscal year.
  - name: Budgets
    description: >-
      Read income statement and balance sheet budget settings. Monthly cell
      values, actuals comparisons, and accounts are available through separate
      budget routes.
  - name: Companies
    description: >-
      Access and manage company information. Retrieve details about your
      organization including legal name, tax identifiers, addresses, and
      accounting preferences. If your organization connects an integration that
      syncs this resource with a third-party system, a change you make here can
      also be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Period Locks
    description: >-
      Period locks for bills, invoices, other ledger activity, non-ledger
      records, and tax schedules. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Payment Methods
    description: >-
      List payment methods. Filter by id to resolve payment_method_id on a
      payment record. V2 API only.
  - name: Customers
    description: >-
      Manage customer records. Create, update, and track customers who purchase
      goods or services from your organization, including contact information,
      billing addresses, and payment terms. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Contracts
    description: >-
      Manage revenue recognition contracts. Create, retrieve, and update
      contracts with performance obligations, manage obligation usage, and
      create change orders (v2). If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Items
    description: >-
      Manage products and services. Define items that appear on invoices and
      bills, including pricing, descriptions, and associated accounts for
      revenue or expense tracking. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Vendors
    description: >-
      Manage vendor and supplier records. Track businesses and individuals from
      whom you purchase goods or services, including contact details, payment
      terms, and tax information. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Journal Entries
    description: >-
      Create and manage manual journal entries. Create and update post a general
      ledger transaction. A reversal date posts a reversing transaction. Book
      ids assign accounting books. An aging reason on an accounts receivable or
      accounts payable line excludes that line from aging. The save can link a
      related journal entry and an accrual template. If your organization
      connects an integration that syncs this resource with a third-party
      system, a change you make here can also be applied in that system,
      immediately or on a later sync. See the documentation for each integration
      for details.
  - name: Invoices
    description: >-
      Manage sales invoices. Create and track invoices sent to customers for
      goods or services rendered, including line items, taxes, discounts, and
      payment status. If your organization connects an integration that syncs
      this resource with a third-party system, a change you make here can also
      be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Quotes
    description: >-
      Create, submit, and send CPQ quotes, with line billing frequencies,
      multi-year ramps, recipients and signing order, and totals by billing
      frequency. Requires the CPQ subscription. Save a quote with
      `record_status` `posted` to submit it for approval; approvers approve or
      reject it in DualEntry. The API does not render quote PDFs. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Sales Orders
    description: >-
      Create and manage sales orders. Track customer orders for goods or
      services before invoicing, including line items, quantities, fulfillment
      status, and invoicing progress. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Bills
    description: >-
      Manage vendor bills and payables. Record and track bills received from
      vendors for goods or services purchased, including line items, due dates,
      and payment tracking. If your organization connects an integration that
      syncs this resource with a third-party system, a change you make here can
      also be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Customer Prepayments
    description: >-
      Track advance payments from customers. Access prepayments received before
      goods or services are delivered, which can be applied to future invoices.
      If your organization connects an integration that syncs this resource with
      a third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Customer Prepayment Applications
    description: >-
      Apply customer prepayments and credits to invoices. Record applications of
      prepayments or credit memos to reduce invoice balances. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Customer Deposits
    description: >-
      Manage customer deposit transactions. Record and track deposits received
      from customers as security or partial payment, held in liability accounts
      until earned or refunded. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Customer Refunds
    description: >-
      Process and track customer refunds. Record refunds issued to customers for
      overpayments, returns, or cancelled transactions. If your organization
      connects an integration that syncs this resource with a third-party
      system, a change you make here can also be applied in that system,
      immediately or on a later sync. See the documentation for each integration
      for details.
  - name: Customer Credits
    description: >-
      Manage credit memos for customers. Issue credits for returned goods,
      billing adjustments, or discounts that reduce customer balances or can be
      applied to future invoices. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Cash Sales
    description: >-
      Record immediate cash sales transactions. Track sales where payment is
      received at the time of sale, including point-of-sale transactions and
      cash receipts. If your organization connects an integration that syncs
      this resource with a third-party system, a change you make here can also
      be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Customer Payments
    description: >-
      Record and manage customer payments. Track payments received from
      customers and apply them to outstanding invoices, including partial
      payments and overpayments. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Recurring Invoices
    description: >-
      Automate recurring billing. Set up and manage templates for invoices that
      are automatically generated on a regular schedule (e.g., monthly
      subscriptions). If your organization connects an integration that syncs
      this resource with a third-party system, a change you make here can also
      be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Recurring Bills
    description: >-
      Automate recurring expenses. Configure templates for bills that repeat on
      a regular basis (e.g., monthly rent, subscriptions) to streamline expense
      tracking. If your organization connects an integration that syncs this
      resource with a third-party system, a change you make here can also be
      applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Recurring Journal Entries
    description: >-
      Automate recurring journal entries. Create templates for journal entries
      that occur regularly (e.g., monthly depreciation, amortization) to ensure
      consistent accounting treatment. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Classifications
    description: >-
      Manage custom classification dimensions. Create and maintain
      classification categories (e.g., departments, locations, projects) used to
      tag and analyze transactions across multiple dimensions. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Classifications Lines
    description: >-
      Manage classification values. Define the specific values within each
      classification category that can be assigned to transaction line items for
      detailed reporting and analysis. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Custom Fields
    description: >-
      Manage custom field definitions. Extend records with organization-specific
      attributes — name, type (text, number, boolean, date, single_select,
      multi_select, currency, link, paragraph), default value, options, and
      which record types (invoice, bill, customer, vendor, etc.) and companies
      the field applies to. Values are set via the `custom_fields` attribute on
      each record's create/update endpoint. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Purchase Orders
    description: >-
      Create and track purchase orders. Manage formal requests to vendors for
      goods or services, including approval workflows, receiving tracking, and
      bill matching. If your organization connects an integration that syncs
      this resource with a third-party system, a change you make here can also
      be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Vendor Payments
    description: >-
      Record vendor payments and apply them to bills, vendor credits, and
      journal entry lines. Create and update post a general ledger transaction.
      The save also computes realized, rounding, and matching gain or loss. Send
      attachments to replace the file list. PATCH changes only the sent fields.
      POST /{number}/attachments/ adds files and keeps existing files. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Vendor Prepayments
    description: >-
      Track advance payments to vendors. Record prepayments made before goods or
      services are received, which can be applied to future bills. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Vendor Prepayment Applications
    description: >-
      Apply vendor prepayments to bills. Record applications of prepayments to
      reduce bill balances and track amounts owed. If your organization connects
      an integration that syncs this resource with a third-party system, a
      change you make here can also be applied in that system, immediately or on
      a later sync. See the documentation for each integration for details.
  - name: Vendor Credits
    description: >-
      Manage vendor credit memos. Record credits from vendors for returned
      goods, billing adjustments, or discounts that reduce amounts owed or can
      be applied to future bills. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Vendor Refunds
    description: >-
      Process and track vendor refunds. Record refunds received from vendors for
      overpayments, returns, or cancelled transactions. If your organization
      connects an integration that syncs this resource with a third-party
      system, a change you make here can also be applied in that system,
      immediately or on a later sync. See the documentation for each integration
      for details.
  - name: Paper Checks
    description: >-
      Manage paper check printing. Create, queue, and batch print paper checks
      for vendor payments, direct expenses, vendor prepayments, and customer
      refunds. If your organization connects an integration that syncs this
      resource with a third-party system, a change you make here can also be
      applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Direct Expenses
    description: >-
      Record direct expense transactions. Track payments made directly from a
      bank or credit card account for expenses, without going through the
      accounts payable process. If your organization connects an integration
      that syncs this resource with a third-party system, a change you make here
      can also be applied in that system, immediately or on a later sync. See
      the documentation for each integration for details.
  - name: Bank Transfers
    description: >-
      Manage bank-to-bank transfers. Record and track transfers between bank and
      credit card accounts, including multi-currency transfers with exchange
      rate handling. If your organization connects an integration that syncs
      this resource with a third-party system, a change you make here can also
      be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Bank Match
    description: >-
      Reconcile bank-feed rows against accounting transactions. List bank rows,
      trigger the matching pipeline, read AI suggestions, and confirm or undo
      matches. V2 API only. If your organization connects an integration that
      syncs this resource with a third-party system, a change you make here can
      also be applied in that system, immediately or on a later sync. See the
      documentation for each integration for details.
  - name: Bank Connections
    description: >-
      Register and list customer-built inbound bank connection feeds. Create
      connections and accounts with `customer_api` as `source_type`, then push
      transactions separately. V2 API only. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
  - name: Fixed Assets
    description: >-
      Manage fixed assets and capital equipment. Create, update, and track
      long-lived tangible assets including depreciation schedules, account
      assignments, and asset lifecycle management. If your organization connects
      an integration that syncs this resource with a third-party system, a
      change you make here can also be applied in that system, immediately or on
      a later sync. See the documentation for each integration for details.
  - name: Fixed Asset Classes
    description: List fixed asset classes used to set fixed_asset_class_id on an asset.
  - name: Intercompany Journal Entries
    description: >-
      Create and manage intercompany journal entries. Record GL activity that
      spans two or more companies within the same organization, with per-line
      company assignment and automatic intercompany elimination. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: Depreciation Books
    description: >-
      Discover available depreciation books for multi-book depreciation. Each
      organization has a posting book (BOOK) and may have additional tax books
      (FEDERAL, AMT, STATE_*). V2 API only.
  - name: VAT Rates
    description: >-
      Look up available VAT (Value Added Tax) rates for your organization. Use
      these IDs as `vat_rate_id` on transaction line items. Rates are scoped by
      country and include standard, reduced, zero-rated, exempt, and reverse
      charge types. V2 API only.
  - name: GST Tax Rates
    description: >-
      Look up available GST (Goods and Services Tax) rates for your
      organization. Use these IDs as `gst_tax_rate_id` on transaction line
      items. Covers AU, NZ, SG, IN, CA GST regimes and MY SST, with
      per-component breakdowns (e.g. CGST+SGST for India). V2 API only.
  - name: Product Tax Codes
    description: >-
      Manage organization product tax codes and discover global product tax
      codes. Use these IDs as `product_tax_code_id` on item payloads. V2 API
      only.
  - name: Approval Policies
    description: >-
      Manage approval workflows and policies. Define approval rules, steps,
      conditions, and approvers for different record types. Monitor workflow
      execution states and view approval history. If your organization connects
      an integration that syncs this resource with a third-party system, a
      change you make here can also be applied in that system, immediately or on
      a later sync. See the documentation for each integration for details.
  - name: Inbox
    description: >-
      View pending approvals and approval status. Access transactions and
      records awaiting approval across the organization, including full approval
      workflow details, approvers, and action history. If your organization
      connects an integration that syncs this resource with a third-party
      system, a change you make here can also be applied in that system,
      immediately or on a later sync. See the documentation for each integration
      for details.
  - name: Statistical Journals
    description: >-
      Record non-monetary quantity values, such as headcount or square footage.
      Statistical journals never post to the general ledger. If your
      organization connects an integration that syncs this resource with a
      third-party system, a change you make here can also be applied in that
      system, immediately or on a later sync. See the documentation for each
      integration for details.
  - name: E-invoicing
    description: >-
      Read the e-invoicing settings of the organization, the registrations of
      its companies, and the e-invoice filing of an invoice or a customer credit
      with its events and legal files. Retry a failed filing, refresh a started
      one, check a customer before a post, and set the e-invoicing identifiers
      of a customer. The settings, the registrations and the company identifiers
      are read-only: change them in the DualEntry app.


      **Subscription.** Every route except the status route needs the
      e-invoicing subscription. Without it, the route answers 402 before it
      checks the permission. The filing, its legal files and the send rules of a
      record that DualEntry filed still answer after the subscription ends. An
      organization without the subscription posts, sends and archives invoices
      as before.


      **Permissions.** The settings, the registrations and the event list need
      `e_invoicing:view`. The filing of a record follows the permission of its
      record: `invoice:view` or `customer_credit:view` to read it,
      `invoice:edit` or `customer_credit:edit` to retry it. The identifiers need
      `e_invoicing:view` with `customer:view` or `vendor:view` to read, and
      `e_invoicing:edit` with `customer:edit` to write, as in the app. A key
      that the CLI sign-in made reaches only the companies of its user.


      **Error codes.** A refused e-invoicing request carries a stable
      `error_code`: `e_invoicing_send_held` (the authority must clear the
      invoice before the customer gets it), `e_invoicing_legal_pdf_missing` (the
      authority PDF is not stored yet), `e_invoicing_validation` (the authority
      refuses the document data), `e_invoicing_setup` (the setup of the country
      is broken), `e_invoicing_engine` (the e-invoicing engine did not answer or
      refused the request), `e_invoicing_not_retryable` (the filing is not
      failed or rejected), or `e_invoicing_error` (any other refusal). A record
      save that e-invoicing refuses, such as a change of a cleared invoice,
      answers 422 with the reason under the `e_invoicing` key. Not in v1.
  - name: Data Exports
    description: >-
      Request off-cycle refreshes of your organization's data export to its
      configured destination (for example a Snowflake warehouse) and poll their
      status. Exports also run automatically on a schedule — this is the
      on-demand supplement. Requests are accepted and orchestrated by DualEntry;
      there is no SLA on when a run starts. If your organization connects an
      integration that syncs this resource with a third-party system, a change
      you make here can also be applied in that system, immediately or on a
      later sync. See the documentation for each integration for details.
paths:
  /public/v2/contracts/{contract_id}/change-orders/{change_order_id}/:
    put:
      tags:
        - Contracts
      summary: Update Change Order
      description: >-
        Update an existing change order. effective_date is required. An addition
        requires item_id, quantity, and rate. A payload with no modifications or
        additions stays a draft. With an `effective_date` after today, the save
        keeps this change order as `draft` and applies nothing. With a date of
        today or earlier, completing required fields applies the change order.


        **Side effects**

        - If this change order was already applied, DualEntry first reverses
        those changes. DualEntry applies this change order again only if
        `effective_date` is today or earlier.
      operationId: core_api_public_v2_contracts_update_contract_change_order
      parameters:
        - in: path
          name: contract_id
          schema:
            title: Contract Id
            type: integer
          required: true
        - in: path
          name: change_order_id
          schema:
            title: Change Order Id
            type: integer
          required: true
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
            maxLength: 255
          description: >-
            Optional. A unique value (a UUID works well) identifying this
            operation. If the request is repeated with the same key, the
            original response is replayed instead of the operation running
            again, so a retry cannot create a duplicate record. Results are
            replayable for 48 hours. Reusing a key with a different request body
            returns 422.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicContractChangeOrderSchemaUpdateIn'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractChangeOrderSchemaOut'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
components:
  schemas:
    PublicContractChangeOrderSchemaUpdateIn:
      properties:
        effective_date:
          format: date
          title: Effective Date
          type: string
        memo:
          default: ''
          title: Memo
          type: string
        apply_cumulative_catchup:
          default: false
          title: Apply Cumulative Catchup
          type: boolean
        obligation_modifications:
          default: []
          items:
            $ref: >-
              #/components/schemas/PublicContractChangeOrderObligationModificationIn
          title: Obligation Modifications
          type: array
        obligation_additions:
          default: []
          items:
            $ref: '#/components/schemas/PublicContractChangeOrderObligationAdditionIn'
          title: Obligation Additions
          type: array
        record_status:
          anyOf:
            - $ref: '#/components/schemas/RecordStatus'
            - type: 'null'
      required:
        - effective_date
      title: PublicContractChangeOrderSchemaUpdateIn
      type: object
    ContractChangeOrderSchemaOut:
      properties:
        id:
          title: Id
          type: integer
        number:
          title: Number
          type: integer
        code:
          title: Code
          type:
            - string
            - 'null'
        company_id:
          title: Company Id
          type: integer
        company_name:
          title: Company Name
          type: string
        contract_id:
          title: Contract Id
          type: integer
        contract_name:
          title: Contract Name
          type: string
        effective_date:
          title: Effective Date
          format: date
          type:
            - string
            - 'null'
        memo:
          title: Memo
          type:
            - string
            - 'null'
        apply_cumulative_catchup:
          title: Apply Cumulative Catchup
          type: boolean
        catchup_amount:
          title: Catchup Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          type:
            - string
            - 'null'
        transaction_id:
          title: Transaction Id
          type:
            - integer
            - 'null'
        record_status:
          $ref: '#/components/schemas/RecordStatus'
        is_incomplete:
          title: Is Incomplete
          type: boolean
        obligation_modifications:
          items:
            additionalProperties: true
            type: object
          title: Obligation Modifications
          type: array
        obligation_additions:
          items:
            $ref: '#/components/schemas/PerformanceObligationIn'
          title: Obligation Additions
          type: array
        book_ids:
          items:
            type: integer
          title: Book Ids
          type: array
        change_summary:
          default: []
          items:
            $ref: '#/components/schemas/ObligationChangeSummary'
          title: Change Summary
          type: array
      required:
        - id
        - number
        - company_id
        - company_name
        - contract_id
        - contract_name
        - effective_date
        - memo
        - apply_cumulative_catchup
        - transaction_id
        - record_status
        - is_incomplete
        - obligation_modifications
        - obligation_additions
        - book_ids
      title: ContractChangeOrderSchemaOut
      type: object
    ErrorSchema:
      properties:
        success:
          const: false
          default: false
          title: Success
          type: boolean
        errors:
          additionalProperties:
            items:
              type: string
            type: array
          title: Errors
          type: object
        error_code:
          title: Error Code
          type:
            - string
            - 'null'
        error_reason:
          title: Error Reason
          type:
            - string
            - 'null'
      required:
        - errors
      title: ErrorSchema
      type: object
    PublicContractChangeOrderObligationModificationIn:
      properties:
        obligation_id:
          title: Obligation Id
          type:
            - integer
            - 'null'
        quantity:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Quantity
        quantity_basis:
          anyOf:
            - $ref: '#/components/schemas/ChangeOrderQuantityBasis'
            - type: 'null'
        rate:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Rate
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        memo:
          title: Memo
          type:
            - string
            - 'null'
        discount_type:
          title: Discount Type
          type:
            - string
            - 'null'
        discount_value:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Discount Value
        standalone_selling_price:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Standalone Selling Price
        obligation_conditions:
          title: Obligation Conditions
          additionalProperties: true
          type:
            - object
            - 'null'
        cancel:
          default: false
          title: Cancel
          type: boolean
      title: PublicContractChangeOrderObligationModificationIn
      type: object
    PublicContractChangeOrderObligationAdditionIn:
      properties:
        id:
          title: Id
          type:
            - integer
            - 'null'
        item_id:
          minimum: 1
          title: Item Id
          type: integer
        quantity:
          anyOf:
            - minimum: 0
              type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
              type: string
          title: Quantity
        rate:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
              type: string
          title: Rate
        position:
          default: 0
          title: Position
          type: integer
        memo:
          default: ''
          maxLength: 512
          title: Memo
          type: string
        standalone_selling_price:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
              type: string
            - type: 'null'
          title: Standalone Selling Price
        term_id:
          title: Term Id
          type:
            - integer
            - 'null'
        billing_group:
          default: 1
          minimum: 1
          title: Billing Group
          type: integer
        recognition_strategy:
          allOf:
            - $ref: '#/components/schemas/RecognitionStrategy'
          default: straight_line
        obligation_conditions:
          additionalProperties: true
          title: Obligation Conditions
          type: object
        classifications:
          default: []
          items:
            $ref: '#/components/schemas/RecordClassificationsSchemaOut'
          title: Classifications
          type: array
        billing_start_date:
          title: Billing Start Date
          format: date
          type:
            - string
            - 'null'
        billing_end_date:
          title: Billing End Date
          format: date
          type:
            - string
            - 'null'
        billing_frequency:
          anyOf:
            - $ref: '#/components/schemas/BillingCadence'
            - type: 'null'
        billing_interval:
          title: Billing Interval
          type:
            - integer
            - 'null'
        billing_mode:
          anyOf:
            - $ref: '#/components/schemas/BillingMode'
            - type: 'null'
        sync_billing_with_recognition:
          default: false
          title: Sync Billing With Recognition
          type: boolean
        skip_invoice_generation:
          default: false
          title: Skip Invoice Generation
          type: boolean
        recognition_start_date:
          title: Recognition Start Date
          format: date
          type:
            - string
            - 'null'
        recognition_end_date:
          title: Recognition End Date
          format: date
          type:
            - string
            - 'null'
        recognition_frequency:
          anyOf:
            - $ref: '#/components/schemas/RecognitionCadence'
            - type: 'null'
        recognition_interval:
          title: Recognition Interval
          type:
            - integer
            - 'null'
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
        discount_value:
          anyOf:
            - exclusiveMinimum: 0
              type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
              type: string
            - type: 'null'
          title: Discount Value
        selected_vat_rate_id:
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        selected_gst_tax_rate_id:
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        is_auto_renewable:
          default: false
          title: Is Auto Renewable
          type: boolean
        ramp_group_id:
          title: Ramp Group Id
          format: uuid
          type:
            - string
            - 'null'
      required:
        - item_id
        - quantity
        - rate
      title: PublicContractChangeOrderObligationAdditionIn
      type: object
    RecordStatus:
      enum:
        - draft
        - posted
        - archived
      title: RecordStatus
      type: string
    PerformanceObligationIn:
      description: Input schema for performance obligation (contract line item).
      properties:
        id:
          title: Id
          type:
            - integer
            - 'null'
        item_id:
          title: Item Id
          minimum: 1
          type:
            - integer
            - 'null'
        quantity:
          title: Quantity
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        rate:
          title: Rate
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          type:
            - string
            - 'null'
        position:
          default: 0
          title: Position
          type: integer
        memo:
          default: ''
          maxLength: 512
          title: Memo
          type: string
        standalone_selling_price:
          title: Standalone Selling Price
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          type:
            - string
            - 'null'
        term_id:
          title: Term Id
          type:
            - integer
            - 'null'
        billing_group:
          default: 1
          minimum: 1
          title: Billing Group
          type: integer
        recognition_strategy:
          allOf:
            - $ref: '#/components/schemas/RecognitionStrategy'
          default: straight_line
        obligation_conditions:
          additionalProperties: true
          title: Obligation Conditions
          type: object
        classifications:
          default: []
          items:
            $ref: '#/components/schemas/RecordClassificationsSchemaOut'
          title: Classifications
          type: array
        billing_start_date:
          title: Billing Start Date
          format: date
          type:
            - string
            - 'null'
        billing_end_date:
          title: Billing End Date
          format: date
          type:
            - string
            - 'null'
        billing_frequency:
          anyOf:
            - $ref: '#/components/schemas/BillingCadence'
            - type: 'null'
        billing_interval:
          title: Billing Interval
          type:
            - integer
            - 'null'
        billing_mode:
          anyOf:
            - $ref: '#/components/schemas/BillingMode'
            - type: 'null'
        sync_billing_with_recognition:
          default: false
          title: Sync Billing With Recognition
          type: boolean
        skip_invoice_generation:
          default: false
          title: Skip Invoice Generation
          type: boolean
        recognition_start_date:
          title: Recognition Start Date
          format: date
          type:
            - string
            - 'null'
        recognition_end_date:
          title: Recognition End Date
          format: date
          type:
            - string
            - 'null'
        recognition_frequency:
          anyOf:
            - $ref: '#/components/schemas/RecognitionCadence'
            - type: 'null'
        recognition_interval:
          title: Recognition Interval
          type:
            - integer
            - 'null'
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
        discount_value:
          title: Discount Value
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        selected_vat_rate_id:
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        selected_gst_tax_rate_id:
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        is_auto_renewable:
          default: false
          title: Is Auto Renewable
          type: boolean
        ramp_group_id:
          title: Ramp Group Id
          format: uuid
          type:
            - string
            - 'null'
        is_incomplete:
          readOnly: true
          title: Is Incomplete
          type: boolean
        amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Amount
          type: string
        discount_amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Discount Amount
          type: string
        net_amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Net Amount
          type: string
      required:
        - is_incomplete
        - amount
        - discount_amount
        - net_amount
      title: PerformanceObligationIn
      type: object
    ObligationChangeSummary:
      properties:
        predecessor:
          anyOf:
            - $ref: '#/components/schemas/PerformanceObligationOut'
            - type: 'null'
        successor:
          anyOf:
            - $ref: '#/components/schemas/PerformanceObligationOut'
            - type: 'null'
        type:
          $ref: '#/components/schemas/ObligationChangeType'
        changes:
          additionalProperties:
            $ref: '#/components/schemas/ObligationFieldChange'
          default: {}
          title: Changes
          type: object
      required:
        - type
      title: ObligationChangeSummary
      type: object
    ChangeOrderQuantityBasis:
      enum:
        - remaining
        - full
      title: ChangeOrderQuantityBasis
      type: string
    RecognitionStrategy:
      enum:
        - straight_line
        - straight_line_start_end_even
        - daily_prorata
        - milestone
        - usage_tiered
        - usage
        - immediate
        - deposit_release
      title: RecognitionStrategy
      type: string
    RecordClassificationsSchemaOut:
      properties:
        id:
          title: Id
          type: integer
        name:
          title: Name
          type: string
        line_id:
          title: Line Id
          type: integer
        line_name:
          title: Line Name
          type: string
        parent_classification_id:
          title: Parent Classification Id
          type:
            - integer
            - 'null'
        parent_classification_line_id:
          title: Parent Classification Line Id
          type:
            - integer
            - 'null'
      required:
        - id
        - name
        - line_id
        - line_name
      title: RecordClassificationsSchemaOut
      type: object
    BillingCadence:
      enum:
        - one_time
        - daily
        - weekly
        - monthly
        - quarterly
        - semi_annually
        - annually
      title: BillingCadence
      type: string
    BillingMode:
      enum:
        - period
        - synced
        - drawdown
      title: BillingMode
      type: string
    RecognitionCadence:
      enum:
        - daily
        - weekly
        - monthly
        - quarterly
        - semi_annually
        - annually
      title: RecognitionCadence
      type: string
    DiscountType:
      enum:
        - PERCENTAGE
        - FIXED
      title: DiscountType
      type: string
    PerformanceObligationOut:
      description: Output schema for performance obligation (contract line item).
      properties:
        id:
          title: Id
          type:
            - integer
            - 'null'
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        item_type:
          title: Item Type
          type:
            - string
            - 'null'
        item_name:
          title: Item Name
          type:
            - string
            - 'null'
        hsn_sac_code:
          title: Hsn Sac Code
          type:
            - string
            - 'null'
        income_account_id:
          title: Income Account Id
          type:
            - integer
            - 'null'
        deferral_account_id:
          title: Deferral Account Id
          type:
            - integer
            - 'null'
        quantity:
          title: Quantity
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        rate:
          title: Rate
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          type:
            - string
            - 'null'
        position:
          title: Position
          type: integer
        memo:
          title: Memo
          type: string
        standalone_selling_price:
          title: Standalone Selling Price
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          type:
            - string
            - 'null'
        term_id:
          title: Term Id
          type:
            - integer
            - 'null'
        billing_group:
          default: 1
          minimum: 1
          title: Billing Group
          type: integer
        recognition_strategy:
          allOf:
            - $ref: '#/components/schemas/RecognitionStrategy'
          default: straight_line
        obligation_conditions:
          additionalProperties: true
          title: Obligation Conditions
          type: object
        classifications:
          default: []
          items:
            $ref: '#/components/schemas/RecordClassificationsSchemaOut'
          title: Classifications
          type: array
        billing_start_date:
          format: date
          title: Billing Start Date
          type: string
        billing_end_date:
          title: Billing End Date
          format: date
          type:
            - string
            - 'null'
        billing_frequency:
          $ref: '#/components/schemas/BillingCadence'
        billing_interval:
          title: Billing Interval
          type: integer
        billing_mode:
          allOf:
            - $ref: '#/components/schemas/BillingMode'
          default: period
        sync_billing_with_recognition:
          default: false
          title: Sync Billing With Recognition
          type: boolean
        skip_invoice_generation:
          default: false
          title: Skip Invoice Generation
          type: boolean
        recognition_start_date:
          format: date
          title: Recognition Start Date
          type: string
        recognition_end_date:
          title: Recognition End Date
          format: date
          type:
            - string
            - 'null'
        recognition_frequency:
          $ref: '#/components/schemas/RecognitionCadence'
        recognition_interval:
          title: Recognition Interval
          type: integer
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
        discount_value:
          title: Discount Value
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        allocated_amount:
          title: Allocated Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        selected_vat_rate_id:
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        selected_gst_tax_rate_id:
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        is_auto_renewable:
          default: false
          title: Is Auto Renewable
          type: boolean
        auto_renewal_date:
          title: Auto Renewal Date
          format: date
          type:
            - string
            - 'null'
        renewed_from_id:
          title: Renewed From Id
          type:
            - integer
            - 'null'
        changed_from_id:
          title: Changed From Id
          type:
            - integer
            - 'null'
        change_lineage_root_id:
          title: Change Lineage Root Id
          type:
            - integer
            - 'null'
        ramp_group_id:
          title: Ramp Group Id
          format: uuid
          type:
            - string
            - 'null'
        prepaid_invoiced:
          title: Prepaid Invoiced
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        prepaid_recognized:
          title: Prepaid Recognized
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        prepaid_remaining:
          title: Prepaid Remaining
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        is_incomplete:
          readOnly: true
          title: Is Incomplete
          type: boolean
        amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Amount
          type: string
        discount_amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Discount Amount
          type: string
        net_amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Net Amount
          type: string
        qualifies_for_mrr:
          description: Whether this obligation should be included in MRR/ARR calculations.
          readOnly: true
          title: Qualifies For Mrr
          type: boolean
      required:
        - position
        - memo
        - billing_start_date
        - billing_frequency
        - billing_interval
        - recognition_start_date
        - recognition_frequency
        - recognition_interval
        - is_incomplete
        - amount
        - discount_amount
        - net_amount
        - qualifies_for_mrr
      title: PerformanceObligationOut
      type: object
    ObligationChangeType:
      enum:
        - MODIFICATION
        - CANCELLATION
        - ADDITION
      title: ObligationChangeType
      type: string
    ObligationFieldChange:
      properties:
        old_value:
          title: Old Value
          type:
            - string
            - 'null'
        new_value:
          title: New Value
          type:
            - string
            - 'null'
      title: ObligationFieldChange
      type: object

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.