Skip to main content
Glama

update-draft-agreement

Destructive

Edit a draft agreement in place; only agreements in draft status can be edited. Only the fields you send change. Send the term object the agreement type owns (csa_attributes and csa_order_form_attributes for a CSA, design_partner_attributes for a Design, and so on) and include that term's existing id from get-agreement, otherwise the request is rejected. Use send-agreement when the draft is ready.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
pathParamsYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / body / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `NDA`. NDA terms live directly on the agreement (`purpose`, `term`, `confidentiality_period`), so an NDA draft has no term object of its own.",
      -    "properties": {
      -      "agreement": {
      -        "additionalProperties": {},
      -        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      -        "properties": {
      -          "additional_changes": {
      -            "description": "Free-text changes shown on the cover page.",
      -            "type": "string"
      -          },
      -          "agreement_roles_attributes": {
      -            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "id": {
      -                  "description": "The UUID of an existing role. Omit when adding a new person.",
      -                  "format": "uuid",
      -                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      -                  "type": "string"
      -                },
      -                "role": {
      -                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      -                  "enum": [
      -                    "cc"
      -                  ],
      -                  "type": "string"
      -                },
      -                "user_attributes": {
      -                  "additionalProperties": false,
      -                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      -                  "properties": {
      -                    "email": {
      -                      "anyOf": [
      -                        {},
      -                        {}
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "role"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "attachment_ids": {
      -            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      -            "items": {
      -              "format": "uuid",
      -              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "billing_email": {
      -            "description": "Email of the billing contact.",
      -            "format": "email",
      -            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      -            "type": "string"
      -          },
      -          "billing_name": {
      -            "description": "Name of the billing contact.",
      -            "type": "string"
      -          },
      -          "billing_workflow_type": {
      -            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      -            "enum": [
      -              "link",
      -              "stripe"
      -            ],
      -            "type": "string"
      -          },
      -          "chosen_courts_country": {
      -            "description": "The country in which disputes will be resolved.",
      -            "type": "string"
      -          },
      -          "chosen_courts_region": {
      -            "description": "The state or region in which disputes will be resolved.",
      -            "type": "string"
      -          },
      -          "confidentiality_period": {
      -            "description": "How many years confidentiality obligations last (NDA).",
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "confidentiality_period_perpetual": {
      -            "description": "When true, confidentiality obligations are perpetual (NDA).",
      -            "type": "boolean"
      -          },
      -          "default_signer_email": {
      -            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      -            "format": "email",
      -            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      -            "type": "string"
      -          },
      -          "district_or_county": {
      -            "description": "The district or county for dispute resolution.",
      -            "type": "string"
      -          },
      -          "effective_date": {
      -            "description": "The effective date, when set explicitly.",
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "effective_date_of_confidentiality": {
      -            "description": "When confidentiality obligations begin (NDA).",
      -            "type": "string"
      -          },
      -          "effective_date_type": {
      -            "description": "How the effective date is determined.",
      -            "type": "string"
      -          },
      -          "framework_terms_description": {
      -            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      -            "type": "string"
      -          },
      -          "framework_terms_type": {
      -            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      -            "enum": [
      -              "new",
      -              "description"
      -            ],
      -            "type": "string"
      -          },
      -          "governing_law_country": {
      -            "description": "The country whose laws govern the agreement.",
      -            "type": "string"
      -          },
      -          "governing_law_region": {
      -            "description": "The state or region whose laws govern the agreement.",
      -            "type": "string"
      -          },
      -          "include_additional_changes": {
      -            "description": "When true, `additional_changes` is included on the cover page.",
      -            "type": "boolean"
      -          },
      -          "include_automated_nudges": {
      -            "description": "When true, reminder emails are sent automatically.",
      -            "type": "boolean"
      -          },
      -          "include_automated_payment_reminders": {
      -            "description": "When true, payment reminder emails are sent automatically.",
      -            "type": "boolean"
      -          },
      -          "include_billing_info": {
      -            "description": "When true, `billing_name` and `billing_email` are included.",
      -            "type": "boolean"
      -          },
      -          "include_billing_workflow": {
      -            "description": "When true, enables a billing workflow after signing.",
      -            "type": "boolean"
      -          },
      -          "include_cc_users": {
      -            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      -            "type": "boolean"
      -          },
      -          "include_expiration_date": {
      -            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "include_expiration_days": {
      -            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "include_expiration_type": {
      -            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      -            "enum": [
      -              "none",
      -              "days",
      -              "date"
      -            ],
      -            "type": "string"
      -          },
      -          "include_message": {
      -            "description": "When true, `message` is sent with the agreement.",
      -            "type": "boolean"
      -          },
      -          "manual_send": {
      -            "description": "When true, the agreement is marked as sent outside the platform.",
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "The message sent to the recipient.",
      -            "type": "string"
      -          },
      -          "negotiations_allowed": {
      -            "description": "When true, the recipient can propose changes.",
      -            "type": "boolean"
      -          },
      -          "payment_link_url": {
      -            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      -            "type": "string"
      -          },
      -          "purpose": {
      -            "description": "The purpose of the agreement (NDA).",
      -            "type": "string"
      -          },
      -          "recipient_city": {
      -            "description": "The counterparty's city.",
      -            "type": "string"
      -          },
      -          "recipient_country": {
      -            "description": "The counterparty's country.",
      -            "type": "string"
      -          },
      -          "recipient_email": {
      -            "description": "The counterparty's email address.",
      -            "format": "email",
      -            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      -            "type": "string"
      -          },
      -          "recipient_name": {
      -            "description": "The counterparty's full name.",
      -            "type": "string"
      -          },
      -          "recipient_notice_email_address": {
      -            "description": "Email address for legal notices to the recipient.",
      -            "format": "email",
      -            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      -            "type": "string"
      -          },
      -          "recipient_organization": {
      -            "description": "The counterparty's organization.",
      -            "type": "string"
      -          },
      -          "recipient_state": {
      -            "description": "The counterparty's state or region.",
      -            "type": "string"
      -          },
      -          "recipient_street_address": {
      -            "description": "The counterparty's street address.",
      -            "type": "string"
      -          },
      -          "recipient_title": {
      -            "description": "The counterparty's job title.",
      -            "type": "string"
      -          },
      -          "recipient_zip": {
      -            "description": "The counterparty's postal code.",
      -            "type": "string"
      -          },
      -          "sender_last_to_sign": {
      -            "description": "When true, your signer signs after the recipient.",
      -            "type": "boolean"
      -          },
      -          "sender_notice_email_address": {
      -            "description": "Email address for legal notices to your organization.",
      -            "format": "email",
      -            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      -            "type": "string"
      -          },
      -          "subsidiary_id": {
      -            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      -          },
      -          "term": {
      -            "description": "The length of the agreement term in years (NDA).",
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "term_period_perpetual": {
      -            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      -            "type": "boolean"
      -          },
      -          "test_agreement": {
      -            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      -            "type": "boolean"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `CSA`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `DPA`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `Design`. The agreement type is `Design` and the term it owns is `design_partner`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `Pilot`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `PSA`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `Partnership`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `BAA`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `LOI`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `Software License`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft whose `agreement_type` is `Amendment`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Body for a draft created from a custom template. Drafts created from a custom template have no standard term object; their fields live in `custom_field_values`.",
      -    "properties": {
      -      "agreement": {}
      -    },
      -    "required": [
      -      "agreement"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `NDA`. NDA terms live directly on the agreement (`purpose`, `term`, `confidentiality_period`), so an NDA draft has no term object of its own.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `CSA`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `DPA`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `Design`. The agreement type is `Design` and the term it owns is `design_partner`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `Pilot`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `PSA`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `Partnership`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `BAA`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `LOI`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `Software License`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft whose `agreement_type` is `Amendment`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Body for a draft created from a custom template. Drafts created from a custom template have no standard term object; their fields live in `custom_field_values`.",
      +    "properties": {
      +      "agreement": {
      +        "additionalProperties": {},
      +        "description": "The cover page fields every draft accepts, whatever its agreement type. Omitted fields keep their current values.",
      +        "properties": {
      +          "additional_changes": {
      +            "description": "Free-text changes shown on the cover page.",
      +            "type": "string"
      +          },
      +          "agreement_roles_attributes": {
      +            "description": "The keep-informed (`cc`) users on the draft. Requires `include_cc_users` to be `true`. Add a person by sending `role: \"cc\"` with `user_attributes.email` and no `id`. Remove one by sending its existing `id` with a blank `user_attributes.email`. People are identified by email only, so there is no way to cc someone by user id.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "description": "The UUID of an existing role. Omit when adding a new person.",
      +                  "format": "uuid",
      +                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "description": "The role to manage. Only `cc` roles can be changed through this endpoint.",
      +                  "enum": [
      +                    "cc"
      +                  ],
      +                  "type": "string"
      +                },
      +                "user_attributes": {
      +                  "additionalProperties": false,
      +                  "description": "The person to cc. Send a blank `email` with an `id` to remove that person.",
      +                  "properties": {
      +                    "email": {
      +                      "anyOf": [
      +                        {},
      +                        {}
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "role"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "attachment_ids": {
      +            "description": "The UUIDs of the attachments to include, from `POST /v1/attachments`. Replaces the current list.",
      +            "items": {
      +              "format": "uuid",
      +              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "billing_email": {
      +            "description": "Email of the billing contact.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "billing_name": {
      +            "description": "Name of the billing contact.",
      +            "type": "string"
      +          },
      +          "billing_workflow_type": {
      +            "description": "The type of billing workflow. Use \"link\" with `payment_link_url`, or \"stripe\" for Stripe-managed billing.",
      +            "enum": [
      +              "link",
      +              "stripe"
      +            ],
      +            "type": "string"
      +          },
      +          "chosen_courts_country": {
      +            "description": "The country in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "chosen_courts_region": {
      +            "description": "The state or region in which disputes will be resolved.",
      +            "type": "string"
      +          },
      +          "confidentiality_period": {
      +            "description": "How many years confidentiality obligations last (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "confidentiality_period_perpetual": {
      +            "description": "When true, confidentiality obligations are perpetual (NDA).",
      +            "type": "boolean"
      +          },
      +          "default_signer_email": {
      +            "description": "The email of the user in your organization who signs the agreement. Must belong to a user in your organization; changing it moves the signer role to that user. A signer outside your organization returns a 400.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "district_or_county": {
      +            "description": "The district or county for dispute resolution.",
      +            "type": "string"
      +          },
      +          "effective_date": {
      +            "description": "The effective date, when set explicitly.",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "effective_date_of_confidentiality": {
      +            "description": "When confidentiality obligations begin (NDA).",
      +            "type": "string"
      +          },
      +          "effective_date_type": {
      +            "description": "How the effective date is determined.",
      +            "type": "string"
      +          },
      +          "framework_terms_description": {
      +            "description": "Custom framework terms description. Only used when `framework_terms_type` is \"description\".",
      +            "type": "string"
      +          },
      +          "framework_terms_type": {
      +            "description": "How framework terms are specified. Use \"new\" for standard terms or \"description\" with `framework_terms_description`.",
      +            "enum": [
      +              "new",
      +              "description"
      +            ],
      +            "type": "string"
      +          },
      +          "governing_law_country": {
      +            "description": "The country whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "governing_law_region": {
      +            "description": "The state or region whose laws govern the agreement.",
      +            "type": "string"
      +          },
      +          "include_additional_changes": {
      +            "description": "When true, `additional_changes` is included on the cover page.",
      +            "type": "boolean"
      +          },
      +          "include_automated_nudges": {
      +            "description": "When true, reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_automated_payment_reminders": {
      +            "description": "When true, payment reminder emails are sent automatically.",
      +            "type": "boolean"
      +          },
      +          "include_billing_info": {
      +            "description": "When true, `billing_name` and `billing_email` are included.",
      +            "type": "boolean"
      +          },
      +          "include_billing_workflow": {
      +            "description": "When true, enables a billing workflow after signing.",
      +            "type": "boolean"
      +          },
      +          "include_cc_users": {
      +            "description": "Whether to keep other people informed. Setting this to `false` removes every keep-informed (`cc`) user on the draft, and while it is `false` new `cc` roles are ignored.",
      +            "type": "boolean"
      +          },
      +          "include_expiration_date": {
      +            "description": "Expiration date in YYYY-MM-DD format. Use with `include_expiration_type` \"date\".",
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "include_expiration_days": {
      +            "description": "Days until the agreement expires. Use with `include_expiration_type` \"days\".",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "include_expiration_type": {
      +            "description": "How the agreement expires: \"none\" (default), \"days\" (use `include_expiration_days`), or \"date\" (use `include_expiration_date`).",
      +            "enum": [
      +              "none",
      +              "days",
      +              "date"
      +            ],
      +            "type": "string"
      +          },
      +          "include_message": {
      +            "description": "When true, `message` is sent with the agreement.",
      +            "type": "boolean"
      +          },
      +          "manual_send": {
      +            "description": "When true, the agreement is marked as sent outside the platform.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "The message sent to the recipient.",
      +            "type": "string"
      +          },
      +          "negotiations_allowed": {
      +            "description": "When true, the recipient can propose changes.",
      +            "type": "boolean"
      +          },
      +          "payment_link_url": {
      +            "description": "A payment URL shown to the recipient after signing. Requires `include_billing_workflow` and `billing_workflow_type` \"link\".",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "The purpose of the agreement (NDA).",
      +            "type": "string"
      +          },
      +          "recipient_city": {
      +            "description": "The counterparty's city.",
      +            "type": "string"
      +          },
      +          "recipient_country": {
      +            "description": "The counterparty's country.",
      +            "type": "string"
      +          },
      +          "recipient_email": {
      +            "description": "The counterparty's email address.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_name": {
      +            "description": "The counterparty's full name.",
      +            "type": "string"
      +          },
      +          "recipient_notice_email_address": {
      +            "description": "Email address for legal notices to the recipient.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "recipient_organization": {
      +            "description": "The counterparty's organization.",
      +            "type": "string"
      +          },
      +          "recipient_state": {
      +            "description": "The counterparty's state or region.",
      +            "type": "string"
      +          },
      +          "recipient_street_address": {
      +            "description": "The counterparty's street address.",
      +            "type": "string"
      +          },
      +          "recipient_title": {
      +            "description": "The counterparty's job title.",
      +            "type": "string"
      +          },
      +          "recipient_zip": {
      +            "description": "The counterparty's postal code.",
      +            "type": "string"
      +          },
      +          "sender_last_to_sign": {
      +            "description": "When true, your signer signs after the recipient.",
      +            "type": "boolean"
      +          },
      +          "sender_notice_email_address": {
      +            "description": "Email address for legal notices to your organization.",
      +            "format": "email",
      +            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      +            "type": "string"
      +          },
      +          "subsidiary_id": {
      +            "description": "The UUID of the subsidiary sending the agreement. Send `null`, an empty string, or an id that no longer exists to clear it. Omit the key entirely to leave the current subsidiary alone."
      +          },
      +          "term": {
      +            "description": "The length of the agreement term in years (NDA).",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "term_period_perpetual": {
      +            "description": "When true, the term runs perpetually and `term` is ignored (NDA).",
      +            "type": "boolean"
      +          },
      +          "test_agreement": {
      +            "description": "When true, marks the agreement as a test. Test agreements do not count against your monthly limit.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "agreement"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered, but the description still adds real substance: partial-update semantics ('Only the fields you send change'), the status gate, and the term-object requirement that causes rejection. It stops short of describing auth needs or what 'destructive' means here (e.g. cc removal side effects noted in the schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, each carrying a distinct constraint (status gate, partial update, term object requirement, handoff to send-agreement), with the routing note last. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, high-risk mutation with a heavy anyOf body and an output schema, the description covers the critical behavioral gotchas (status, partial update, term id). Return values need not be explained since an output schema exists. Minor gap: it does not warn about schema-level side effects like clearing cc users or replacing attachment lists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level params (body, pathParams) have no descriptions, so coverage reads 0%, but the description compensates for the most important semantic gap: it tells the agent to send the agreement-type-specific term object (csa_attributes, design_partner_attributes, ...) with that term's existing id from get-agreement. This mapping is not obvious from the schema's anyOf branches. It does not enumerate the term object names exhaustively ('and so on').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Edit a draft agreement in place') and immediately constrains scope to draft-status agreements. An agent can distinguish it from send-agreement and update-custom-template without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the precondition (only draft status), the routing rule ('Use send-agreement when the draft is ready'), and the rejection condition (missing term id). Explicit when/when-not with a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.