---
title: "Update a contract by ID"
method: PUT
path: "/contracts/{contract_id}"
tags: ["Contract"]
---

# Update a contract by ID

`PUT /contracts/{contract_id}`

Use this endpoint to update a specific contract by its ID. Note that many fields are only editable before the contract is signed.

## Path parameters

- `contract_id` integer, required

## Headers

- `x-oneflow-api-token` string, required
- `x-oneflow-user-email` string, email, required

## Request body

- object — Request body for an update contract request.
  - `_private` object — Attributes that are only visible to the party of the current user. See [Private](https://developer.oneflow.com/docs/contract#private)
    - `name` string — The name of the contract.
    - `signing_period_expiration` union
      - object — The signing period for this contract never expires.
        - `type` 'never', required — Can only be 'never'.
      - object — This contract expires after the specified number of days after publication. You can use this option only if the contract is in the draft stage. Once the contract is published, the system will convert this type to `fixed_date.`
        - `type` 'days_after_publish', required — Can only be 'days_after_publish'.
        - `expire_days_after_publish` integer, required — The number of days the contract is available for signing after it has been published.
      - object — The contract is available for signing until the specified date.
        - `type` 'fixed_date', required — Can only be 'fixed_date'.
        - `expire_date` string, date, required — The final day the contract is valid for signing.
    - `single_sign` boolean — Enable or disable single sign on the contract.
    - `value` object, nullable — The deal size of a contract as an amount of money.
      - `amount` string, amount, required — An amount specifying the total value.
  - `sign_later` boolean — If set to <b>true</b>, the contract signing will postpone until the contract is ready.
  - `sign_order` object[], nullable — Sign order of the participants.
    - `participant_id` integer, required — participant ID
    - `order` integer, required — Sign order
  - `tags` object[] — list of objects of tag ids to be left in the contract
    - `id` integer, required

## Response `200`

Returns the updated [contract](contract).

- object — See [Contract](https://developer.oneflow.com/docs/contract).
  - `_links` object — Links to related endpoints.
    - `comments` object
      - `href` string, nullable
    - `contracts` object
      - `href` string, nullable
    - `contract` object
      - `href` string, nullable
    - `create` object
      - `href` string, nullable
    - `data_field` object
      - `href` string, nullable
    - `data_fields` object
      - `href` string, nullable
    - `events` object
      - `href` string, nullable
    - `event` object
      - `href` string, nullable
    - `files` object
      - `href` string, nullable
    - `file` object
      - `href` string, nullable
    - `next` object
      - `href` string, nullable
    - `parties` object
      - `href` string, nullable
    - `party` object
      - `href` string, nullable
    - `previous` object
      - `href` string, nullable
    - `publish` object
      - `href` string, nullable
    - `self` object
      - `href` string, nullable
    - `template_types` object
      - `href` string, nullable
    - `template_type` object
      - `href` string, nullable
    - `template` object
      - `href` string, nullable
    - `templates` object
      - `href` string, nullable
    - `workspaces` object
      - `href` string, nullable
    - `workspace` object
      - `href` string, nullable
    - `playbooks` object
      - `href` string, nullable
  - `_permissions` object, required — This attribute contains the permissions for various operations possible on the contract. The format of the permission is 'contract:' followed by the specific operation, like 'contract:create.'
    - `contract:delete` boolean, required
    - `contract:download:pdf` boolean, required
    - `contract:send` boolean, required
  - `_integration_permissions` object[] — A list of integration specific permissions. This exists only for specific integration tokens
    - `key` string, required
    - `value` string, required
  - `_private` object, required — See [Private](https://developer.oneflow.com/docs/contract#private)
    - `date_format` string, required — The date format of the contract.
    - `value` object, nullable, required — See [Contract value](https://developer.oneflow.com/docs/contract#value).
      - `amount` string, amount, required
      - `currency` string, currency, required
    - `folder` object, required — A folder.
      - `id` integer, required — Folder ID
      - `name` string, required — Folder name.
      - `parent_id` integer, nullable, required — If exist any parent folder, its ID.
      - `path` integer[], required — An array of folder IDs representing the path from the top of the hierarchy to the current folder.
    - `language` string — The language of the contract.
    - `name` string, required — The name of the contract.
    - `signing_period_expiration` union, required
      - object — The signing period for this contract never expires
        - `type` 'never', required — Can only be 'never'.
      - object — The signing period for this contract expires a given number of days after publishing. This setting can only be used when the contract is in the draft stage. Converts into a "fixed_date" after the contract is published.
        - `type` 'days_after_publish', required — Can only be 'days_after_publish'.
        - `expire_days_after_publish` integer, required
      - object — The signing period for this contract expires on a set date.
        - `type` 'fixed_date', required — Can only be 'fixed_date'.
        - `expire_date` string, date, required
    - `workspace_id` integer, nullable, required — The unique id of this workspace.
    - `single_sign` boolean — State of the feature single sign
  - `_private_ownerside` object, nullable, required — Contract data that is private to the ownerside.
    - `created_time` string, datetime, required
    - `template_id` integer, nullable, required
    - `template_type_id` integer, nullable, required
    - `playbook_id` integer, nullable
    - `blueprint_ids` integer[], nullable
  - `attachment_file_groups` object[], required — A list of attachment type file groups in the contract.
    - `_private_ownerside` object, nullable, required — File group data that is private to the ownerside.
      - `created_time` string, datetime, required
      - `updated_time` string, datetime, nullable, required
    - `files` object[], required
      - `_private_ownerside` object, nullable, required — File data that is private to the ownerside.
        - `created_time` string, datetime, required
        - `updated_time` string, datetime, nullable, required
      - `extension` string, nullable, required — The file extension.
      - `id` integer, required
      - `name` string, nullable, required — The name of the file.
      - `size` integer, nullable, required — The size of the file in bytes.
    - `id` integer, required
    - `type` 'attachment' | 'pdf', required — The file group type of the file group sections. There are only two types available, `attachment` and `pdf`.
  - `available_options` object, required — Available options in the contract. See [Available options](https://developer.oneflow.com/docs/contract#available-options).
    - `can_receive_attachments` boolean, required
    - `can_receive_expanded_pdf` boolean, required
    - `can_receive_products` boolean, required
    - `can_receive_product_tax` boolean, required
    - `delivery_channels` object[], required
      - `name` 'email' | 'sms' | 'email_and_sms' | 'same_device' | 'none' | 'unknown', required — One of the contract [delivery channels](contract#delivery-channels).
      - `preferred` boolean, required
      - `required_participant_attributes` string[], required
    - `sign_methods` object[], required
      - `name` 'standard_esign' | 'sms' | 'swedish_bankid' | 'norwegian_bankid' | 'danish_mitid' | 'finnish_bankid' | 'handwritten_signature' | 'eid_sign' | 'unknown', required — One of the [sign methods](contract#sign-methods).
      - `preferred` boolean, required
    - `two_step_authentication_methods` object[], required
      - `name` 'email' | 'sms' | 'personal_identification' | 'none' | 'unknown', required — One of the [two step authentication methods](contract#two-step-authentication-methods).
      - `preferred` boolean, required
      - `required_participant_attributes` string[], required
  - `data_fields` object[], required — The data fields that are part of the contract.
    - `_links` object — Links to related endpoints.
      - `comments` object
        - `href` string, nullable
      - `contracts` object
        - `href` string, nullable
      - `contract` object
        - `href` string, nullable
      - `create` object
        - `href` string, nullable
      - `data_field` object
        - `href` string, nullable
      - `data_fields` object
        - `href` string, nullable
      - `events` object
        - `href` string, nullable
      - `event` object
        - `href` string, nullable
      - `files` object
        - `href` string, nullable
      - `file` object
        - `href` string, nullable
      - `next` object
        - `href` string, nullable
      - `parties` object
        - `href` string, nullable
      - `party` object
        - `href` string, nullable
      - `previous` object
        - `href` string, nullable
      - `publish` object
        - `href` string, nullable
      - `self` object
        - `href` string, nullable
      - `template_types` object
        - `href` string, nullable
      - `template_type` object
        - `href` string, nullable
      - `template` object
        - `href` string, nullable
      - `templates` object
        - `href` string, nullable
      - `workspaces` object
        - `href` string, nullable
      - `workspace` object
        - `href` string, nullable
      - `playbooks` object
        - `href` string, nullable
    - `_private_ownerside` object, required — Data field attributes that are private to the ownerside.
      - `created_time` string, datetime, required
      - `custom_id` string, nullable, required
      - `updated_time` string, datetime, nullable, required
    - `description` string, required
    - `id` integer, required
    - `name` string, required
    - `placeholder` string, required
    - `value` string, required
  - `draft_approval_workflow` object, nullable — Draft approval work flow details.
    - `status` string, nullable
  - `id` integer, required
  - `image_file_groups` object[], required — A list of image type file groups in the contract.
    - `_private_ownerside` object, nullable, required — File group data that is private to the ownerside.
      - `created_time` string, datetime, required
      - `updated_time` string, datetime, nullable, required
    - `files` object[], required — A list of image files in the group.
      - `_private_ownerside` object, nullable, required — File data that is private to the ownerside.
        - `created_time` string, datetime, required
        - `updated_time` string, datetime, nullable, required
      - `alt_text` string, nullable, required — The alternative text of the image.
      - `extension` string, nullable, required — The image extension.
      - `id` integer, required
      - `size` integer, nullable, required — The size of the image in bytes.
    - `id` integer, required
    - `type` 'image', required — The type of the image group. The only available type is `image`.
  - `imported` boolean, nullable — A flag denoting whether the contract has been imported or not.
  - `lifecycle_settings` object, nullable, required — See [Lifecycle settings](lifecycle-settings).
    - `duration` string, duration, nullable, required
    - `end_date` string, date, nullable, required
    - `initial_duration` string, duration, nullable, required
    - `notice_period` string, duration, nullable, required
    - `start_date` string, date, nullable, required
    - `type` 'no_duration' | 'single_period' | 'recurring' | 'recurring_two_periods' | 'unknown', required — One of the contract [duration types](contract#duration-type).
  - `lifecycle_state` object, nullable, required — Lifecycle information of the contract. See [Lifecycle state](https://developer.oneflow.com/docs/contract#lifecycle-state).
    - `composite` 'awaiting' | 'awaiting-recurring' | 'active' | 'active-recurring' | 'active-canceled-recurring' | 'ended' | 'ended-terminated' | 'ended-terminated-recurring', required — One of the [lifecycle composites](contract#lifecycle-composite).
    - `contract_end_time` string, datetime, nullable, required
    - `contract_start_time` string, datetime, nullable, required
    - `cancel_time` string, datetime, nullable, required
    - `has_ended_by_termination` boolean, required
    - `has_passed_notice_period_start_time` boolean, required
    - `is_canceled` boolean, required
    - `is_recurring` boolean, required
    - `lifecycle_state` 'awaiting' | 'active' | 'ended' | 'unknown', required — One of the [lifecycle states](ccontract#lifecycle-states).
    - `lifecycle_state_updated_time` string, datetime, required
    - `notice_period_start_time` string, datetime, nullable, required
    - `period` integer, nullable, required
    - `period_end_time` string, datetime, nullable, required
    - `period_start_time` string, datetime, nullable, required
  - `links` union[] — All links on the contract. These links can be either `internal` or `external` (<b>links</b> is only available in the <b>Get a contract by ID</b> response)
    - union
      - object — Internal contract link.
        - `id` integer, required
        - `linked_contract` integer, required
        - `type` 'amends' | 'amended_by' | 'sub_contract' | 'main_contract' | 'replaced_by' | 'replaces' | 'relates_to', required — One of the [link types](contract#links).
      - object — External contract link.
        - `id` integer, required
        - `type` 'external', required — Can only be `external` of the [link types](contract#links).
        - `external_link` string, required
        - `external_title` string, required
  - `marked_as_signed` boolean, nullable — A flag denoting whether the contract has been marked as signed or not.
  - `parties` union[], required — The parties involved in this contract.
    - union
      - object — An individual party, where a single participant is signing on behalf of him- or herself. See [Individual party](https://developer.oneflow.com/docs/party#individual)
        - `_links` object — Links to related endpoints.
          - `comments` object
            - `href` string, nullable
          - `contracts` object
            - `href` string, nullable
          - `contract` object
            - `href` string, nullable
          - `create` object
            - `href` string, nullable
          - `data_field` object
            - `href` string, nullable
          - `data_fields` object
            - `href` string, nullable
          - `events` object
            - `href` string, nullable
          - `event` object
            - `href` string, nullable
          - `files` object
            - `href` string, nullable
          - `file` object
            - `href` string, nullable
          - `next` object
            - `href` string, nullable
          - `parties` object
            - `href` string, nullable
          - `party` object
            - `href` string, nullable
          - `previous` object
            - `href` string, nullable
          - `publish` object
            - `href` string, nullable
          - `self` object
            - `href` string, nullable
          - `template_types` object
            - `href` string, nullable
          - `template_type` object
            - `href` string, nullable
          - `template` object
            - `href` string, nullable
          - `templates` object
            - `href` string, nullable
          - `workspaces` object
            - `href` string, nullable
          - `workspace` object
            - `href` string, nullable
          - `playbooks` object
            - `href` string, nullable
        - `_private_ownerside` object, nullable, required — Party data that is private to the ownerside.
          - `created_time` string, datetime, required
          - `custom_id` string, nullable, required
          - `updated_time` string, datetime, nullable, required
        - `country_code` string, country_code, required
        - `id` integer, required
        - `identification_number` string, required
        - `my_party` boolean, required
        - `name` string, nullable, required
        - `participant` object, required — See [Participant](https://developer.oneflow.com/docs/participant).
          - `_links` object — Links to related endpoints.
            - `comments` object
              - …
            - `contracts` object
              - …
            - `contract` object
              - …
            - `create` object
              - …
            - `data_field` object
              - …
            - `data_fields` object
              - …
            - `events` object
              - …
            - `event` object
              - …
            - `files` object
              - …
            - `file` object
              - …
            - `next` object
              - …
            - `parties` object
              - …
            - `party` object
              - …
            - `previous` object
              - …
            - `publish` object
              - …
            - `self` object
              - …
            - `template_types` object
              - …
            - `template_type` object
              - …
            - `template` object
              - …
            - `templates` object
              - …
            - `workspaces` object
              - …
            - `workspace` object
              - …
            - `playbooks` object
              - …
          - `_permissions` object, required — This attribute contains the permissions for the participant/creator on the contract.
            - `contract:update` boolean, required
          - `_private_ownerside` object, nullable, required — Participant data that is private to the ownerside.
            - `created_time` string, datetime, required
            - `custom_id` string, nullable, required
            - `first_visited_time` string, datetime, nullable, required
            - `last_visited_time` string, datetime, nullable, required
            - `updated_time` string, datetime, nullable, required
            - `visits` integer, required
          - `delivery_channel` 'email' | 'sms' | 'email_and_sms' | 'same_device' | 'none' | 'unknown', required — One of the contract [delivery channels](contract#delivery-channels).
          - `delivery_status` 'not_sent' | 'pending' | 'failure' | 'bounce' | 'success' | 'opened' | 'unknown', required — One of the contract [delivery status](contract-participant#delivery-status).
          - `draft_approver` boolean — A flag to indicate if the participant is a draft approver.
          - `email` string, email, required
          - `id` integer, required
          - `identification_number` string, required
          - `my_participant` boolean, required
          - `name` string, nullable, required
          - `organizer` boolean, required — A flag to indicate if the participant is an organizer combined with the permissions.
          - `pending_approver` boolean — A flag to indicate if the participant is a pending approver.
          - `phone_number` string, nullable, required
          - `sign_method` 'standard_esign' | 'sms' | 'swedish_bankid' | 'norwegian_bankid' | 'danish_mitid' | 'finnish_bankid' | 'handwritten_signature' | 'eid_sign' | 'unknown', required — One of the [sign methods](contract#sign-methods).
          - `sign_state` 'undecided' | 'signed' | 'declined' | 'unknown', required — One of the [sign states](contract-participant#sign-state).
          - `sign_state_updated_time` string, datetime, nullable, required
          - `signatory` boolean, required — A flag to indicate if the participant is an signatory combined with the permissions.
          - `title` string, required
          - `two_step_authentication_method` 'email' | 'sms' | 'personal_identification' | 'none' | 'unknown', required — One of the [two step authentication methods](contract#two-step-authentication-methods).
        - `type` 'individual', required — Can only be `individual`.
      - object — The participants are signing on behalf of this company. See [Company party](https://developer.oneflow.com/docs/party#company).
        - `_links` object — Links to related endpoints.
          - `comments` object
            - `href` string, nullable
          - `contracts` object
            - `href` string, nullable
          - `contract` object
            - `href` string, nullable
          - `create` object
            - `href` string, nullable
          - `data_field` object
            - `href` string, nullable
          - `data_fields` object
            - `href` string, nullable
          - `events` object
            - `href` string, nullable
          - `event` object
            - `href` string, nullable
          - `files` object
            - `href` string, nullable
          - `file` object
            - `href` string, nullable
          - `next` object
            - `href` string, nullable
          - `parties` object
            - `href` string, nullable
          - `party` object
            - `href` string, nullable
          - `previous` object
            - `href` string, nullable
          - `publish` object
            - `href` string, nullable
          - `self` object
            - `href` string, nullable
          - `template_types` object
            - `href` string, nullable
          - `template_type` object
            - `href` string, nullable
          - `template` object
            - `href` string, nullable
          - `templates` object
            - `href` string, nullable
          - `workspaces` object
            - `href` string, nullable
          - `workspace` object
            - `href` string, nullable
          - `playbooks` object
            - `href` string, nullable
        - `_private_ownerside` object, nullable, required — Party data that is private to the ownerside.
          - `created_time` string, datetime, required
          - `custom_id` string, nullable, required
          - `updated_time` string, datetime, nullable, required
        - `country_code` string, country_code, required
        - `id` integer, required
        - `identification_number` string, required
        - `my_party` boolean, required
        - `name` string, required
        - `participants` object[], required — The maximum number of participants per contract across all parties is 40.
          - `_links` object — Links to related endpoints.
            - `comments` object
              - …
            - `contracts` object
              - …
            - `contract` object
              - …
            - `create` object
              - …
            - `data_field` object
              - …
            - `data_fields` object
              - …
            - `events` object
              - …
            - `event` object
              - …
            - `files` object
              - …
            - `file` object
              - …
            - `next` object
              - …
            - `parties` object
              - …
            - `party` object
              - …
            - `previous` object
              - …
            - `publish` object
              - …
            - `self` object
              - …
            - `template_types` object
              - …
            - `template_type` object
              - …
            - `template` object
              - …
            - `templates` object
              - …
            - `workspaces` object
              - …
            - `workspace` object
              - …
            - `playbooks` object
              - …
          - `_permissions` object, required — This attribute contains the permissions for the participant/creator on the contract.
            - `contract:update` boolean, required
          - `_private_ownerside` object, nullable, required — Participant data that is private to the ownerside.
            - `created_time` string, datetime, required
            - `custom_id` string, nullable, required
            - `first_visited_time` string, datetime, nullable, required
            - `last_visited_time` string, datetime, nullable, required
            - `updated_time` string, datetime, nullable, required
            - `visits` integer, required
          - `delivery_channel` 'email' | 'sms' | 'email_and_sms' | 'same_device' | 'none' | 'unknown', required — One of the contract [delivery channels](contract#delivery-channels).
          - `delivery_status` 'not_sent' | 'pending' | 'failure' | 'bounce' | 'success' | 'opened' | 'unknown', required — One of the contract [delivery status](contract-participant#delivery-status).
          - `draft_approver` boolean — A flag to indicate if the participant is a draft approver.
          - `email` string, email, required
          - `id` integer, required
          - `identification_number` string, required
          - `my_participant` boolean, required
          - `name` string, nullable, required
          - `organizer` boolean, required — A flag to indicate if the participant is an organizer combined with the permissions.
          - `pending_approver` boolean — A flag to indicate if the participant is a pending approver.
          - `phone_number` string, nullable, required
          - `sign_method` 'standard_esign' | 'sms' | 'swedish_bankid' | 'norwegian_bankid' | 'danish_mitid' | 'finnish_bankid' | 'handwritten_signature' | 'eid_sign' | 'unknown', required — One of the [sign methods](contract#sign-methods).
          - `sign_state` 'undecided' | 'signed' | 'declined' | 'unknown', required — One of the [sign states](contract-participant#sign-state).
          - `sign_state_updated_time` string, datetime, nullable, required
          - `signatory` boolean, required — A flag to indicate if the participant is an signatory combined with the permissions.
          - `title` string, required
          - `two_step_authentication_method` 'email' | 'sms' | 'personal_identification' | 'none' | 'unknown', required — One of the [two step authentication methods](contract#two-step-authentication-methods).
        - `type` 'company', required — Can only be `company`.
  - `pdf_file_groups` object[], required — A list of expanded pdf type file groups in the contract.
    - `_private_ownerside` object, nullable, required — File group data that is private to the ownerside.
      - `created_time` string, datetime, required
      - `updated_time` string, datetime, nullable, required
    - `files` object[], required
      - `_private_ownerside` object, nullable, required — File data that is private to the ownerside.
        - `created_time` string, datetime, required
        - `updated_time` string, datetime, nullable, required
      - `extension` string, nullable, required — The file extension.
      - `id` integer, required
      - `name` string, nullable, required — The name of the file.
      - `size` integer, nullable, required — The size of the file in bytes.
    - `id` integer, required
    - `type` 'attachment' | 'pdf', required — The file group type of the file group sections. There are only two types available, `attachment` and `pdf`.
  - `pending_approval_workflow` object, nullable — Pending approval work flow details.
    - `status` string, nullable
  - `product_groups` object[], required — A list of product groups.
    - `_private_ownerside` object, nullable, required — Product group data that is private to the ownerside.
      - `created_time` string, datetime, required
      - `custom_id` string, nullable, required
      - `updated_time` string, datetime, nullable, required
    - `configuration` object, required — Updated product group configuration
      - `columns` object[]
        - `enabled` boolean
        - `key` 'name' | 'description' | 'price_1' | 'price_2' | 'count', required — One of the product group column keys.
        - `label` string
        - `tax_1` object — Product group tax display name.
          - `label` string — The product group tax display name label.
          - `incl_tax` boolean — If true, prices are entered including tax.
      - `counterpart_edit` boolean
      - `hide_price_summation` boolean
      - `name` object — Product group name data.
        - `enabled` boolean — If true, the product group name is enabled.
        - `label` string — The product group name label.
      - `price_affixes` object — Postfix and prefix of a contract product price.
        - `postfix` string
        - `prefix` string
      - `price_precision` integer, nullable
      - `quantity_precision` integer, nullable
      - `tax_1` object — Product group tax display name.
        - `label` string — The product group tax display name label.
        - `incl_tax` boolean — If true, prices are entered including tax.
    - `created_from` integer, nullable — This will be only available in the contract create response.
    - `enabled_columns` object[], required
      - `enabled` boolean, required
      - `key` string, required
    - `id` integer, required
    - `products` object[], required
      - `_private_ownerside` object, nullable, required — Product data that is private to the ownerside.
        - `created_time` string, datetime, required
        - `custom_id` string, nullable, required
        - `updated_time` string, datetime, nullable, required
      - `counterparty_lock` boolean
      - `created_from` integer, nullable — This will be only available in the contract create response.
      - `description` string
      - `id` integer, required
      - `name` string, required
      - `price_1` object, nullable, required — An object that holds all price related information for an individual product.
        - `amount` object, required — The price amount after discount.
          - `amount` string, signed_amount_4_decimal, nullable, required
        - `base_amount` object, required — The price amount before discount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_amount` object, required — The absolute discount amount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_percent` string, discount_percent, nullable, required — The discount percentage as a decimal string between "0" and "100".
        - `tax_1` object, nullable — Product tax details.
          - `key` 'percentage', required
          - `value` string, tax_percent, required — Represents the tax percentage as a decimal string greater than or equal to 0 and less than or equal to 100.
      - `price_2` object, nullable, required — An object that holds all price related information for an individual product.
        - `amount` object, required — The price amount after discount.
          - `amount` string, signed_amount_4_decimal, nullable, required
        - `base_amount` object, required — The price amount before discount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_amount` object, required — The absolute discount amount.
          - `amount` string, amount_4_decimal, nullable, required
        - `discount_percent` string, discount_percent, nullable, required — The discount percentage as a decimal string between "0" and "100".
        - `tax_1` object, nullable — Product tax details.
          - `key` 'percentage', required
          - `value` string, tax_percent, required — Represents the tax percentage as a decimal string greater than or equal to 0 and less than or equal to 100.
      - `quantity` object, required — The object holds information about the quantity of an individual product. The default quantity type is multiple_choice. If the quantity type is single_choice or multiple_choice, the amount must be set to 0 or 1. If the quantity type is set to single_choice, the amount must be set to 1 at least for one product, and 0 for the rest of the products in the same product group with the quantity type single_choice.
        - `amount` number, nullable — The number of individual products selected, or the quantity.
        - `type` 'single_choice' | 'multiple_choice' | 'quantity' — One of the product's [quantity types](product-group#quantity-type).
  - `published_time` string, datetime, nullable, required
  - `sign_later` boolean — A flag to indicate if the contract signing is postponed.
  - `sign_order` object[], required — Sign order of the participants.
    - `participant_id` integer, required — participant ID
    - `order` integer, required — Sign order
  - `signing_period_expiry_time` string, datetime, nullable, required
  - `state` 'draft' | 'pending' | 'overdue' | 'signed' | 'declined' | 'unknown', required — One of the [contract states](contract#contract-state).
  - `state_updated_time` string, datetime, required
  - `tags` object[], required — All tags associated with the contract.
    - `id` integer, required
    - `name` string, required
  - `updated_time` string, datetime, nullable, required

## Other responses

- `400` — Invalid format or content of the request.
- `401` — The API token or the user email is invalid.
- `403` — The request is not authorized by the server.
- `404` — A required entity is missing.
- `409` — A conflict occurred with the current state of the target resource.

---

[API](https://skmtc.net/oneflow/apis/public-api-for-oneflow.md) · [All operations](https://skmtc.net/oneflow/apis/public-api-for-oneflow/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneflow/public-api-for-oneflow/versions/0e73a45dec15/schema)
